次のコードを使用して、WPFアプリケーションで未処理の例外を表示しています。
public MyApplication() {
this.DispatcherUnhandledException += (o, e) => {
var exceptionMessage = new ExceptionWindow();
exceptionMessage.ExceptionMessage.Text = e.Exception.Message;
exceptionMessage.ExceptionCallStack.Text = e.Exception.StackTrace;
exceptionMessage.ExceptionInnerException.Text = e.Exception.InnerException.Message;
exceptionMessage.WindowStartupLocation = WindowStartupLocation.CenterScreen;
exceptionMessage.WindowStyle = WindowStyle.ToolWindow;
exceptionMessage.ShowDialog();
e.Handled = true;
Shell.Close();
};
}
アプリケーションのインスタンス化中に例外が発生したため、アプリコンストラクターが実行されないことがわかりました。
(別の例外を除いて)それを再現する簡単な方法は、アプリの構成ファイルのタグの前に余分な「<」を導入して実行することです。
このような役に立たないエラーメッセージは、アプリケーションコンストラクタが呼び出される前に表示されます。 代替テキストhttp://srtsolutions.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mikewoelmer/ExceptionWPF1_5F00_1C1F39AA.jpg
誰かがそのような種類の例外をキャッチする方法を知っていますか?
備考:私はCaliburnを使用しており、アプリケーションはCaliburnApplicationを拡張しています。