1

我正在尝试在使用 Xamarin 构建的仅限 Android 的应用程序中实现未捕获的异常处理程序以用于日志记录。

AppDomain.CurrentDomain.UnhandledException += (o, e) => exLogger.UncaughtException((Exception)e.ExceptionObject);
TaskScheduler.UnobservedTaskException += (o, e) => exLogger.UncaughtException(e.Exception);

 public void UncaughtException(Exception ex)
 {
     try
     {

         Log.Error(TAG, "Exception caught: {0}", ex.Message ?? "Unknown Exception");
         var di = Directory.CreateDirectory(Path.Combine(context.FilesDir.AbsolutePath, TAG));

         //Rest of Handler - saves error to file system, attempts to upload to a server
         ...
     }
     catch (Exception)
     {
         Log.Error(TAG, "Exception handler failed");
     }
}

当我在一个非常简单的“Hello World”应用程序中实现它时,有问题的处理程序可以零问题工作,我在按钮按下时触发异常:

throw new Exception("this is a test exception");

(或类似的)。

然而,当我在我实际开发的应用程序中做同样的事情时,应用程序在处理程序中崩溃,没有打印出关于为什么会发生这种情况的更多信息。
当我单步执行我的代码时,调试器会在处理程序的入口处命中一个断点——例如,在try块内,但Log.Error在行之前。但是,尝试比这一点更进一步会导致应用程序立即崩溃,而不会Log.Debug执行 try OR catch 块中的任何一行 - 没有任何内容打印到 ADB Logger。此外,打印到 ADB 日志W/system.err的错误只是我故意引起的错误(触发处理程序) - 没有提供有关处理程序内崩溃的信息。

有谁知道是什么导致了这次崩溃,或者甚至有关于如何从 ADB 日志中获取更多关于处理程序中的崩溃是由什么引起的信息的建议?我唯一的思路是,因为我的应用程序是 WebView 应用程序,WebView 本身可能会以某种方式消耗异常?任何帮助是极大的赞赏!

4

0 回答 0