我的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
}
或者也许我应该使用其他崩溃记录器?
答案 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