キャッチされなかった例外を受け取る

category: C# | 2018-02-01

キャッチされなかった例外があると、System.AppDomain.UnhandledExceptionイベントが発生します。

このイベントを受け取ることで、例外がキャッチできずユーザーに残念なダイアログを表示せずに済みます。
なにより安全に終了し、例外ログを残すような処理をすることが可能になります。

namespace TimeSignal
{
    public class Sample
    {
        /// <summary>
        /// アプリ開始時の処理
        /// </summary>
        public void OnStartUp()
        {
            // イベントを登録
            System.AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
        }

        /// <summary>
        /// ハンドリングされなかった例外のハンドリング
        /// </summary>
        private void OnUnhandledException(object sender, System.UnhandledExceptionEventArgs e)
        {
            // ここでエラーメッセージとか出す

            System.Environment.Exit( 1 );
        }
    }
}