語言

MarshalManagedExceptionMode 列舉

定義

這個枚舉用來指定當拋出受管理異常且該例外到達原生程式碼時該怎麼做。

public enum MarshalManagedExceptionMode
type MarshalManagedExceptionMode = 
繼承
MarshalManagedExceptionMode

欄位

名稱 值 Description
Default 0

預設模式。 這目前 ThrowObjectiveCException與 相同。

UnwindNativeCode 1

讓執行時開始解開原生幀。

此選項僅在使用 MonoVM 執行時可用,使用 CoreCLR 執行時則無法使用。 CoreCLR 執行時不支援解開原生框架,會直接中止該程序。 CoreCLR 執行時用於 macOS(非 Mac Catalyst)應用程式,或使用 NativeAOT 時。

此選項不建議,因為若受管理例外進入原生程式碼,會導致無法定義的行為(應用程式可能當機、記憶體洩漏、死鎖等)。(MonoVM 執行時無法解開原生框架,因此任何情況都有可能發生)。 推薦的選項是 ThrowObjectiveCException。

ThrowObjectiveCException 2

將受管理例外轉換成 Objective-C 例外。 這是推薦的選項(也是預設的行為)。

Abort 3

當受管理例外進入原生程式碼時,中止。 這在除錯時很有用,能輕鬆偵測受管理異常何時進入原生程式碼。

Disable 4

關閉管理異常的封送。 這實際上與 一樣 UnwindNativeCode,只是不會引發任何事件。

適用於