MarshalManagedExceptionMode Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Este enum é usado para especificar o que fazer quando uma exceção gerida é lançada, e essa exceção atinge o código nativo.
public enum MarshalManagedExceptionMode
type MarshalManagedExceptionMode =
- Herança
-
MarshalManagedExceptionMode
Campos
| Nome | Valor | Descrição |
|---|---|---|
| Default | 0 | O modo padrão. Isto é atualmente o mesmo que ThrowObjectiveCException. |
| UnwindNativeCode | 1 | Deixe o tempo de execução desenrolar os frames nativos. Esta opção só está disponível quando se utiliza o runtime MonoVM, não quando se utiliza o runtime CoreCLR. O runtime CoreCLR não suporta desenrolar frames nativos e simplesmente aborta o processo. O runtime CoreCLR é usado numa aplicação macOS (não Mac Catalyst), ou quando se usa NativeAOT. Esta opção não é recomendada, porque leva a comportamentos indefinidos (a aplicação pode crashar, perder memória, bloquear, etc.) se exceções geridas atingirem código nativo (o runtime da MonoVM não sabe como desenrolar frames nativos, por isso tudo pode acontecer). A opção recomendada é ThrowObjectiveCException. |
| ThrowObjectiveCException | 2 | Converter a exceção gerida numa exceção Objective-C. Esta é a opção recomendada (e também o comportamento padrão). |
| Abort | 3 | Abortar quando uma exceção gerida atingir código nativo. Isto pode ser útil durante a depuração para detetar facilmente quando exceções geridas chegam ao código nativo. |
| Disable | 4 | Desative o marshalling das exceções geridas. Isto é efetivamente o mesmo que UnwindNativeCode, exceto que nenhum evento será levantado. |