キャッチされない例外


意外と知らない人がいたので。

例えば、Windows Formのボタンクリック時に下記を実行するとアプリケーションは必ずハンドルされていない例外で落ちますか?

private void button1_Click(object sender, EventArgs e)
{
  throw new Exception("エラー");
}

続き

ハンドル可能です。
アプリケーションのメイン エントリ ポイント等で優しく受けとめてあげしましょう。

以下は事故を起こした事を握り潰して、そのまま土に埋める例:真似してはいけない。

static void Main()
{
  Application.ThreadException += Application_ThreadException;
  System.Threading.Thread.GetDomain().UnhandledException += Program_UnhandledException;

  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1());
}

static void Program_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
  Debug.Print("{0}",e.ExceptionObject);
}

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
  Debug.Print(e.Exception.Message); 
}
カテゴリー: 開発 タグ: パーマリンク