アットウィキロゴ
Neroli
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

Neroli

集約例外ハンドラ

最終更新:

kitay

- view
管理者のみ編集可
2011/04/07 00:17 Thu

集約例外ハンドラ

集約例外ハンドラと呼ばれる機能を利用すると、文字通り例外処理を集約することができる。
スタートアップオブジェクトのコンストラクタで使用する。
(スタートアップオブジェクトはプロジェクトのプロパティにて設定)
  1. /// <summary>
  2. /// コンストラクタ
  3. /// </summary>
  4. public App()
  5. {
  6. ExitEventHandler( App_Exit );
  7. this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler( _App_DispatcherUnhandledException );
  8. AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( _CurrentDomain_UnhandledException );
  9. }
  10.  
  11. /// <summary>
  12. /// メインのUIスレッドでの集約例外ハンドラ
  13. /// </summary>
  14. /// <param name="sender"></param>
  15. /// <param name="e"></param>
  16. void _App_DispatcherUnhandledException( object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e )
  17. {
  18. // 例外の表示
  19. ExceptionWindow.Show( e.Exception );
  20.  
  21. // 処理が継続されないようにするには、true に設定する
  22. e.Handled = true;
  23.  
  24. // 既定のウィンドウが表示されないとアプリケーションが終了しないので、終了させる
  25. this.Shutdown();
  26. }
  27.  
  28. /// <summary>
  29. /// メインのUIスレッド以外での集約例外ハンドラ
  30. /// </summary>
  31. /// <param name="sender"></param>
  32. /// <param name="e"></param>
  33. void _CurrentDomain_UnhandledException( object sender, UnhandledExceptionEventArgs e )
  34. {
  35. // 例外の表示
  36. ExceptionWindow.Show( e.ExceptionObject as Exception );
  37. }
  38.  


記事メニュー
最近更新されたスレッド
ウィキ募集バナー