Я реализую Visual Studio AppCenter для обработки сбоев, поскольку он заменяет HockeyApp. Я проверяю это, выдавая исключение вручную в моем коде (НЕ в блоке try / catch):
throw new Exception ("New exception when redirecting to property details!");
Затем у меня есть код, который глобально обрабатывает любые необработанные исключения в Application.cs и пытается записать их в AppCenter с помощью вызова Crashes.TrackError:
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: новое исключение при перенаправлении на
детали собственности! [MonoDroid] в
RPR.Mobile.Droid.Fragments.RecentActivityFragment.RedirectToPropertyDetails
(Свойство RPR.Mobile.Shared.Entities.PropertyDetails.Property)
[0x00001] в
/Users/justintoth/Documents/rpr-mobile/android-application/Fragments/RecentActivityFragment.cs:190
[MonoDroid] в
RPR.Mobile.Droid.Fragments.RecentActivityFragment.b__15_0
(Свойство RPR.Mobile.Shared.Entities.PropertyDetails.Property)
[0x00000] в
/Users/justintoth/Documents/rpr-mobile/android-application/Fragments/RecentActivityFragment.cs:170
[MonoDroid] в
RPR.Mobile.Droid.Adapters.SearchResults.PropertyListRowPhotoAdapter.b__2_0
(System.Object o, System.EventArgs e) [0x00001] в
/Users/justintoth/Documents/rpr-mobile/android-application/Adapters/SearchResults/PropertyListRowPhotoAdapter.cs:34
[MonoDroid] в
Android.Views.View + IOnClickListenerImplementor.OnClick
(Android.Views.View v) [0x00011] в
<5f142c269d8a438c94480ac03744dec7>: 0 [MonoDroid] в
Android.Views.View + IOnClickListenerInvoker.n_OnClick_Landroid_view_View_
(System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr
native_v) [0x00011] в <5f142c269d8a438c94480ac03744dec7>: 0
[MonoDroid] at (динамический метод-обертка)
System.Object.60 (IntPtr, IntPtr, IntPtr)
Однако, когда приложение закрывается, оно записывает исключение на консоль с плохой трассировкой стека:
[AppCenterCrashes] System.Exception: новое исключение, когда
перенаправление на детали недвижимости! [AppCenterCrashes] в (оболочка
динамический метод) System.Object.60 (intptr, intptr, intptr)
[AppCenterCrashes] at (оболочка, встроенная в управляемую)
System.Object.60 (IntPtr, IntPtr, IntPtr)
Когда я смотрю в AppCenter, он регистрирует исключение ТОЛЬКО с плохой трассировкой стека. Так что это проблема ... Другая проблема заключается в том, что он полностью проигнорировал мой вызов Crashes.TrackError, исключение с хорошей трассировкой стека и набором свойств не добавляется в AppCenter.
Чего мне не хватает?