我正在实施Visual Studio AppCenter来处理崩溃,因为它正在替换HockeyApp。我通过在代码中手动抛出异常来测试它(不在try / catch块中):
throw new Exception ("New exception when redirecting to property details!");
然后,我在全局代码中处理Application.cs中所有未捕获的异常,并尝试通过Crashes.TrackError调用将它们记录到AppCenter:
AndroidEnvironment.UnhandledExceptionRaiser += LogException;
private void LogException (object sender, RaiseThrowableEventArgs e) {
var exc = e.Exception;
if (ShouldLogException (exc)) {
// Log exception to AppCenter.
var properties = AppCenterLoggingSink.GetProperties ();
Crashes.TrackError (exc, properties);
e.Handled = true;
}
}
当我这样做时,它记录到控制台的堆栈跟踪看起来很不错:
[MonoDroid] System.Exception:重定向到属性详细信息时出现新的异常![Users / justintoth / Documents / rpr-mobile / android-application / Fragments /中的RPR.Mobile.Droid.Fragments.RecentActivityFragment.RedirectToPropertyDetails的[MonoDroid] [RPR.Mobile.Shared.Entities.PropertyDetails.Property属性] [0x00001] / Users / justintoth / Documents / rpr-mobile / android中的LatestRecentActivityFragment.cs:RPR.Mobile.Droid.Fragments.RecentActivityFragment.b__15_0(RPR.Mobile.Shared.Entities.PropertyDetails.Property属性)中的[MonoDroid] [0x00000] /Applications/Fragments/RecentActivityFragment.cs:170 [RPM.Mobile.Droid.Adapters.SearchResults.PropertyListRowPhotoAdapter.b__2_0(System.Object o,System.EventArgs e)中的[MonoDroid] [0x00001]在/ Users / justintoth / Documents / rpr中-mobile / android-application / Adapters / SearchResults / PropertyListRowPhotoAdapter.cs:
但是,在应用程序关闭时,它会使用错误的堆栈跟踪将异常记录到控制台:
[AppCenterCrashes] System.Exception:重定向到属性详细信息时出现新的异常!(包装器动态方法)System.Object.60(intptr,intptr,intptr)上的[AppCenterCrashes]
当我查看AppCenter时,它仅记录具有错误堆栈跟踪的异常。所以这是一个问题...另一个问题是它完全忽略了我的Crashes.TrackError调用,具有良好堆栈跟踪和属性设置的异常不会添加到AppCenter中。
我想念什么?
Visual Studio AppCenter会自动为您捕获.NET异常。
您之前发布的Android代码不是必需的。没有它,如果您的SDK正确初始化,您将在仪表板中收到堆栈跟踪。
AndroidEnvironment.UnhandledExceptionRaiser += LogException;
private void LogException (object sender, RaiseThrowableEventArgs e) {
var exc = e.Exception;
if (ShouldLogException (exc)) {
// Log exception to AppCenter.
var properties = AppCenterLoggingSink.GetProperties ();
Crashes.TrackError (exc, properties);
e.Handled = true;
}
}
上面的代码仅适用于Android平台。因此,基本上,您会收到Android错误,这意味着您的应用程序崩溃了,然后将其发送到appcenter。因此,这种行为对我来说似乎是合乎逻辑的。
让AppCenter自己捕获崩溃,您应该可以处理.NET异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句