我想防止我的应用程序在引发未处理的异常后关闭。
我正在使用 Xamarin 和 MonoMac 执行此操作,但我认为我可以将 Objective-C 答案转换为 C#。
当异常发生并且没有在任何地方捕获时,我注册未处理异常的事件:
AppDomain.CurrentDomain.UnhandledException += HandleUnhandledException;
并记录它:
static void HandleUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//Log the exception...
}
但是,当异常发生时,会执行 HandleUnhandledException 并退出事件循环:
NSApplication.Main(args);
所以我的应用程序结束了。我怎样才能避免这种情况?我应该在哪里放置 try-catch 块?
这是 xamarin 开发者中心所说的:
“您可以将事件处理程序添加到AppDomain.CurrentDomain.UnhandledException
事件,当发生未处理的托管异常时您将收到通知(请注意,无论您做什么,一旦您从事件处理程序返回,应用程序就会退出,因此唯一的目的就是收集诊断信息。此外,它只会捕获托管异常,而不是本机崩溃,这是退出应用程序的另一个原因)。
因此,显然,您可以添加一个全局 try catch 块,但这只是告诉您有关托管异常的信息,并且应用程序将在 try catch 结束时退出。所以它不能完全达到你的目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)