Neroli
集約例外ハンドラ
最終更新:
kitay
-
view
2011/04/07 00:17 Thu
集約例外ハンドラ
集約例外ハンドラと呼ばれる機能を利用すると、文字通り例外処理を集約することができる。
スタートアップオブジェクトのコンストラクタで使用する。
(スタートアップオブジェクトはプロジェクトのプロパティにて設定)
スタートアップオブジェクトのコンストラクタで使用する。
(スタートアップオブジェクトはプロジェクトのプロパティにて設定)
- /// <summary>
- /// コンストラクタ
- /// </summary>
- public App()
- {
- ExitEventHandler( App_Exit );
- this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler( _App_DispatcherUnhandledException );
- AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( _CurrentDomain_UnhandledException );
- }
-
- /// <summary>
- /// メインのUIスレッドでの集約例外ハンドラ
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void _App_DispatcherUnhandledException( object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e )
- {
- // 例外の表示
- ExceptionWindow.Show( e.Exception );
-
- // 処理が継続されないようにするには、true に設定する
- e.Handled = true;
-
- // 既定のウィンドウが表示されないとアプリケーションが終了しないので、終了させる
- this.Shutdown();
- }
-
- /// <summary>
- /// メインのUIスレッド以外での集約例外ハンドラ
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void _CurrentDomain_UnhandledException( object sender, UnhandledExceptionEventArgs e )
- {
- // 例外の表示
- ExceptionWindow.Show( e.ExceptionObject as Exception );
- }
-