xamarin.forms - Xamarin Forms,如何记录未处理的异常
问题描述
我的 Xamarin Forms 项目中有以下代码。我使用 SentryErrorLog 记录异常并将异常消息保存到本地 pp 设备。我已经测试了以下代码并且记录成功。但是我发现当出现未知异常导致App崩溃时,Sentry和ExternalStorageDirectory都没有日志。未知异常导致 App 关闭并弹出消息“{App name} 已停止”。
因为没有异常的日志,所以不知道怎么排查。而且这种异常只是偶尔发生,我很难找到原因。所以我想知道我是否错过了任何捕获异常的代码?或者有时Android会在App触发异常事件处理程序之前关闭App?
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
}
或者也许我应该使用其他崩溃记录器?
解决方案
您可以在下面添加这些代码来记录未处理的异常:
安卓:
// 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) =>
超轻量级:
// In OnLaunched:
UnhandledException += OnUnhandledException;
以下是一些可能有帮助的链接:
https://forums.xamarin.com/discussion/103962/go-back-to-mainpage-if-there-is-an-unhandled-exception
推荐阅读
- flutter - 带有 GIF 图像的自定义进度指示器
- php - laravel 访问其他有关系的表的数组数据
- android - View Binding extension function
- excel - 如果本月修改,如何查看文件夹中的所有文件?
- android - 构建 APK 时出错 - Android Studio
- python - 气流远程 PythonOperator
- flutter - Flutter Getx 如何将 obs 绑定到 Widget?
- aws-lambda - 使用无服务器同步 RPC 微服务
- python - 104,连接被对等方重置。发送多个长 http post 请求时
- python - 将 Json 格式字符串转换为链接{"link":"https://i.imgur.com/zfxsqlk.png"}