1
Java.Lang.Thread.DefaultUncaughtExceptionHandler
仅捕获Android运行时的异常。我试图把本地异常与引发Java.Lang.Thread.DefaultUncaughtExceptionHandler异常
Java.Lang.Integer.ParseInt("xxx");
但异常不会被逮住DefaultUncaughtExceptionHandler
。这是我的实现:
Application子类:
// 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
逮住一个例外?在托管代码中捕获非托管异常是个好主意吗?
我已经试过了,但是'DefaultUncaughtExceptionHandler'没有抓住异常。如果我使用'AndroidEnvironment.UnhandledExceptionRaiser',那么只会在设备上捕获异常。 – testing
不是'DivideByZeroException'是一个托管异常吗?因为'DefaultUncaughtExceptionHandler'似乎只能捕获非托管异常。在引发'DivideByZeroException'的地方(* MainActivity *,...)是否重要? – testing