Last active
October 27, 2017 05:40
-
-
Save yoshikazuendo/f06b46c00f16b138c18537655e5b97c4 to your computer and use it in GitHub Desktop.
WPFにて例外をまとめてトラップする方法
http://www.atmarkit.co.jp/ait/articles/1512/16/news026.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// WPFのUIスレッドで発生した未処理例外をまとめてハンドリングする | |
public App() | |
{ | |
this.DispatcherUnhandledException += App_DispatcherUnhandledException; | |
} | |
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) | |
{ | |
MessageBoxResult result = MessageBox.Show("例外発生", "エラー", MessageBoxButton.YesNo, MessageBoxImage.Warning); | |
if(result == MessageBoxResult.Yes) | |
{ | |
// 例外を処理済みにできる。 | |
e.Handled = true; | |
} | |
} | |
// 全ての未処理例外を最後にまとめてハンドリングする | |
// 但し、イベントハンドラーを抜けた時点でプログラムは終了する。 | |
public App() | |
{ | |
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; | |
} | |
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) | |
{ | |
var exception = e.ExceptionObject as Exception; | |
if (exception == null) | |
{ | |
MessageBox.Show("System.Exceptionとして扱えない例外"); | |
return; | |
} | |
string errorMember = exception.TargetSite.Name; | |
string errorMessage = exception.Message; | |
string message = string.Format(@"例外が{0}で発生。プログラムは終了します。エラーメッセージ:{1}", errorMember, errorMessag); | |
MessageBox.Show(message, "UnhandledException", MessageBoxButton.OK, MessageBoxImage.Stop); | |
Environment.Exit(0); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment