提高Java.Lang.Thread.DefaultUncaughtExceptionHandler的异常

时间:2016-05-31 14:52:03

标签: c# android xamarin xamarin.android

Java.Lang.Thread.DefaultUncaughtExceptionHandler仅捕获Android运行时的异常。我试图用

抛出原生异常
Java.Lang.Integer.ParseInt("xxx");

但是DefaultUncaughtExceptionHandler没有捕捉到异常。这是我的实施:

应用程序子类

// OnCreate
UncaughtExceptionHandler uncaughtHandler = new UncaughtExceptionHandler();
uncaughtHandler.UncaughtExceptionHandled += OnUncaughtExceptionHandled;
Java.Lang.Thread.DefaultUncaughtExceptionHandler = uncaughtHandler;

private void OnUncaughtExceptionHandled(object sender, Throwable ex)
{
    Console.WriteLine("DefaultUncaughtExceptionHandler");
}

附加课程:

private class UncaughtExceptionHandler : Java.Lang.Object, Java.Lang.Thread.IUncaughtExceptionHandler
{
    public event EventHandler<Throwable> UncaughtExceptionHandled;

    public void UncaughtException(Java.Lang.Thread thread, Throwable ex)
    {
        if (UncaughtExceptionHandled != null)
        {
            UncaughtExceptionHandled(null, ex);
        }
    }
}

如何抛出DefaultUncaughtExceptionHandler捕获的异常?在托管代码中捕获非托管异常是一个好主意吗?

1 个答案:

答案 0 :(得分:0)

在UncaughtExceptionHandler初始化之后,你只需要抛出一个新的异常

throw new DivideByZeroException();
  

在托管代码中捕获非托管异常是一个好主意吗?

叶氏。 Crashlytics(崩溃报告库) - 以相同的方式工作。