Xamarin表单,如何记录未处理的异常

时间:2018-10-22 12:55:26

标签: xamarin.forms error-logging

我的Xamarin Forms项目中有以下代码。我使用SentryErrorLog记录异常并将异常消息保存到本地pp设备。我已经测试了以下代码,并且日志记录成功。但是我发现,当有一个未知异常导致应用程序崩溃时,Sentry和ExternalStorageDirectory中没有日志。未知异常导致应用关闭并弹出消息“ {应用名称}已停止”。

因为没有异常记录,所以我不知道如何进行调查。而且这种例外仅在某些时候发生,这让我很难找到原因。所以我想知道我是否错过任何代码来捕获异常?还是有时候Android在应用触发异常事件处理程序之前关闭了该应用?

    public override void OnCreate()
    {
        base.OnCreate();

        ravenClient = SentryErrorLog.CreateRavenClient();
        AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser;
    }

    private void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
    {
        ravenClient.LogException(e.Exception);
        LogExceptionLocally(e.Exception);
    }

    private void LogExceptionLocally(Exception e)
    {
        // Log to ExternalStorageDirectory
    }

或者也许我应该使用其他崩溃记录器?

1 个答案:

答案 0 :(得分:0)

您可以在下面添加以下代码以记录未处理的异常:

Android:

// In OnCreate,

AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
TaskScheduler.UnobservedTaskException += TaskSchedulerOnUnobservedTaskException;
AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironmentOnUnhandledException;

iOS:

// In FinishedLaunching:

AppDomain.CurrentDomain.UnhandledException += async (sender, e) =>
TaskScheduler.UnobservedTaskException += async (sender, e) =>

UWP:

// In OnLaunched:

UnhandledException += OnUnhandledException;

以下是一些可能有用的链接:

Logging Xamarin unhandled (Android uncaught) exceptions

https://forums.xamarin.com/discussion/103962/go-back-to-mainpage-if-there-is-an-unhandled-exception