トップ > Tech > CSharp > WPF > 未処理の例外を処理する

未処理の例外を処理する

アプリケーションで処理しきれなかった例外を最後にまとめて処理する。

WPF では Application.ThreadException や UnhandledException でなく、 Application.DispatcherUnhandledException で処理する。

プロジェクトにある App.xaml の Application タグに DispatcherUnhandledException 属性を追加する。

DispatcherUnhandledException="Application_DispatcherUnhandledException"

次に App.xaml.cs に下記のようなコードを追加する。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
private void Application_DispatcherUnhandledException(object sender,
  DispatcherUnhandledExceptionEventArgs e)
{
    string mes = string.Format(
        "予期せぬエラーが発生しました。\nお手数ですが、開発者に例外内容を報告してください。\n\n---\n\n{0}\n\n{1}",
        e.Exception.Message, e.Exception.StackTrace);
    MessageBox.Show(mes,
        "予期せぬエラー", MessageBoxButton.OK, MessageBoxImage.Error);
 
    // 例外を処理したことを通知
    e.Handled = true;
    // アプリケーションを終了
    Shutdown();
}

(2010/09/15 14:49:54)
6643
プロフィール

Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。 好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。 詳しくは Web mixi で。

Bookmark and Share