環境
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.7.5
.NET 6
やりたいこと
- WPF アプリで未処理の例外発生時にロギングなどを一括して実装したい
- 何も言わずに終了するのを回避する
やってみる
- 例外発生時に呼び出すメソッドを実装する
-
OnStartup()
をオーバーライドして上記メソッドを登録する
App.xaml.cs
using System;
using System.Windows;
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
DispatcherUnhandledException += OnUnhandledException;
}
private void OnUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
Exception ex = e.Exception;
// TODO: エラーログの作成・通知・アプリケーションの終了などの処理を追加します
MessageBox.Show(ex.Message);
}
}
たったこれだけで、グローバルエラーハンドリングが実装できます。簡単ですね。