情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

WPFアプリケーションで処理されなかった例外に対応する

[STAThread]
static void Main(string[] args)
{
    Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException);

    App app = new App();
    app.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(app_DispatcherUnhandledException);
    app.InitializeComponent();
    app.Run();
}

static void app_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
    string message = e.Exception.CreateMessage(0);

    // 例外の内容を表示  
    MessageBox.Show(message);

    //例外の内容をファイル(error.log)に保存
    using (FileStream fileStream = new FileStream("error.log", FileMode.Append))
    using (StreamWriter streamWriter = new StreamWriter(fileStream))
    {
        streamWriter.Write(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + Environment.NewLine + message + Environment.NewLine.Repeat(2));
    }

    // 例外を処理したことを通知
    e.Handled = true;
}

public static void Application_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    string message = (e.ExceptionObject as Exception).CreateMessage(0);

    // 例外の内容を表示  
    MessageBox.Show(message);

    //例外の内容をファイル(error.log)に保存
    using (FileStream fileStream = new FileStream("error.log", FileMode.Append))
    using (StreamWriter streamWriter = new StreamWriter(fileStream))
    {
        streamWriter.Write(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff") + Environment.NewLine + message + Environment.NewLine.Repeat(2));
    }
}
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-wpf