これは機能します。アプリの起動時にSetupExceptionHandling()メソッドを呼び出します。魔法はNSRunLoopの部分です。しかし、その時点でアプリケーションは予期せぬ効果で奇妙な状態になるだろう。したがって、ユーザーが例外を処理する方法を決定した後に、アプリケーションを強制終了することを強くお勧めします。たとえば、再スローするなどです。
public static class IOSStartupTasks {
private static bool _HaveHandledException;
public static void HandleException(object sender, UnhandledExceptionEventArgs e) {
if (!(_HaveHandledException)) {
_HaveHandledException = true;
UIAlertView alert = new UIAlertView("Error", "Bad news", "report", "just crash");
alert.Delegate = whatever; // delegate object should take the exception as an argument and rethrow when it's done handling user input.
alert.Show();
NSRunLoop.Current.RunUntil(NSDate.DistantFuture); // keeps the app alive, but likely with weird effects, so make sure you don't let the user back into the main app.
}
}
public static void SetupExceptionHandling() {
AppDomain domain = AppDomain.CurrentDomain;
domain.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
IOSStartupTasks.HandleException(sender, e);
}
}
これは実際に彼の元の質問に対処していません。 –