Есть ли глобальный обработчик исключений в приложениях для хранения Windows?
Для необработанных исключений, по крайней мере, я хотел бы уловить детали и записать их в файл для потенциальной последующей "отладки судебной экспертизы". В приложениях для магазина Windows нет события "OnTerminating"; есть ли подходящее место/способ для достижения такого?
UPDATE
Смотрите мой комментарий ниже. Вот дополнение, которое не будет соответствовать ниже:
Даже когда вы удаляете фрагмент xaml, я до сих пор получаю сообщение об ошибке err и даже после очистки и восстановления...??? 2-щелчок по ошибке msg просто возвращает меня в начало App.xaml, все из которых теперь:
<Application
x:Class="SpaceOverlays.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SpaceOverlays">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="Common/StandardStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
ОБНОВЛЕНИЕ 2
После закрытия App.xaml и перестройки все хорошо...??? О, ну... все хорошо, что хорошо кончается. Думаю.
ОБНОВЛЕНИЕ 3
Интересно, что Windows Phone apps App.xaml.cs по умолчанию имеет этот обработчик:
// Global handler for uncaught exceptions.
UnhandledException += Application_UnhandledException;
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (Debugger.IsAttached)
{
// An unhandled exception has occurred; break into the debugger
Debugger.Break();
}
}
Ответы
Ответ 1
В приложениях HTML5/JavaScript у вас есть onerror как последний шанс захватить информацию.
Для приложений на основе XAML вы можете использовать UnhandledException; однако, только фиксирует исключения, которые возникают через структуру XAML (UI), и вы не всегда получаете много информации о том, что является основной причиной, даже в InnerException.
Обновление для Windows 8.1: UnhandledException также будет отображать исключения, созданные методом async void
, В Windows 8 такие исключения просто разрушат приложение. LunarFrog имеет хорошее обсуждение этого на своем веб-сайте.