Xamarin.forms Xamarin.UWP UnhandledException事件处理程序永远不会被激发

Xamarin.forms Xamarin.UWP UnhandledException事件处理程序永远不会被激发,xamarin.forms,xamarin.android,unhandled-exception,xamarin.uwp,Xamarin.forms,Xamarin.android,Unhandled Exception,Xamarin.uwp,在我的App.xaml.cs中,我连接了UnhandledException this.UnhandledException += OnUnhandledException; ,然后我提供了将错误信息发送到GoogleAnalytics的处理程序 private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) { var unhandledException = e.Exception;

在我的App.xaml.cs中,我连接了
UnhandledException

this.UnhandledException += OnUnhandledException;
,然后我提供了将错误信息发送到GoogleAnalytics的处理程序

private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    var unhandledException = e.Exception;
    AnalyticsManager.LogError("", e.Exception.Message, "UnhandledException");
}
我有意在我的代码中引入从未处理过的
deviceByzeroException
,我希望调用我的
OnUnhandledException
处理程序,但不管调试或发布模式如何,都不会发生这种情况。我在这个处理器中放置了一个断点,而这个断点永远不会到达

另一方面,在Xamarin.Android上执行同样的操作将达到断点

更新

它似乎只有在应用程序加载并且出现未处理的错误时才起作用。所以,在这两种情况下(在c-tor或onLaunched中连接未处理的异常),如果在应用程序加载后出现错误,即在单击按钮时,都会起作用。否则,即加载应用程序期间发生未处理的异常,在Xamarin.UWP中不会命中事件处理程序。 有趣的是,在Xamarin.Android上,处理器总是会被击中

我故意在我的代码中引入从未处理过的DeviceByzeroException,我希望调用我的OnUnhandledException处理程序,但不管是调试还是发布模式,都不会发生这种情况

当我在应用程序的构造函数中放置
DeviceByzeroException
时,将不会调用OnUnhandledException处理程序。如果我将它放在
OnLaunched
方法中,它将按预期被调用,并放入主页的构造函数中

根据,只有当应用程序代码不再可能捕获异常时,才会触发此事件

请注意,只有当应用程序代码不再可能捕获异常时,才会触发此事件。例如,假设应用程序事件处理程序调用Windows运行时API,该API反过来调用回调。如果内部应用程序代码抛出异常但未捕获该异常,该异常将通过Windows运行时传播回应用程序代码的外层,从而有机会捕获该异常。只有当应用程序代码不再有机会通过正常传播捕获异常时,才会触发UnhandledException事件


为了直接捕获异常,可以使用
try-catch
技术。有关更多信息,请参阅。

谢谢Nico,我正在使用try。。捕获但始终存在未处理异常的可能性,因此拥有未处理异常事件是为了处理该问题并帮助发现它们。我知道它只有在所有其他处理它的机会都用尽的情况下才会开火