避免 Mac 应用程序在未处理的异常后崩溃

2024-04-23

我想防止我的应用程序在引发未处理的异常后关闭。

我正在使用 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(使用前将#替换为@)

避免 Mac 应用程序在未处理的异常后崩溃 的相关文章

随机推荐