WPFに限らず、例外処理は一ヶ所にまとめましょう。
ASP.NETに「Application_Error」が、Windowsフォームアプリケーションに「Application,ThreadException」があるように、WPFにも「Application.DispatcherUnhandledException」イベントがあります。
ソースコード
MyApp.xaml
<Application x:Class="HelloWorld.MyApp" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="MyApp_Startup" DispatcherUnhandledException="Application_DispatcherUnhandledException" />
MyApp.xaml.cs
using System.Windows; using System.Windows.Threading; namespace HelloWorld { partial class MyApp { public MyApp() { } private void MyApp_Startup(object sender, StartupEventArgs e) { //Window w = new Window( Window w = null; // 意図的に例外を発生させる w.Title = "Hello World"; w.Show(); } private void Application_DispatcherUnhandledException( object sender, DispatcherUnhandledExceptionEventArgs e) { MessageBox.Show(e.Exception.ToString()); e.Handled = true; } } }
参考
Application.DispatcherUnhandledException イベント (System.Windows)
アプリケーションによってスローされた例外が処理されないときに発生します。 ...