- 2012-09-30 (日) 1:46
- WPF
プログラム実行中に意図しないエラーでアプリが落ちることがありますが、落ちる前に終了処理を行いたいような場合もあるかと思います。
(ログ出力やメッセージによるエラー原因表示など)
本来であれば各処理ブロックにtry-catchを入れて都度エラー処理を行うべきですが、実際に開発をしていると漏れが出てくることもチラホラ。
そこで、未処理の例外を確実にキャッチする方法を紹介したいと思います。
未処理例外を捕まえる
ApplicationクラスにDispatcherUnhandledExceptionというイベントが用意されています。
このイベントは未処理の例外発生時に通知されるものです。
まず、XAMLでイベントハンドラを設定します。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Hoge.App" StartupUri="Window1.xaml" DispatcherUnhandledException="OnDispatcherUnhandledException"> <Application.Resources> </Application.Resources> </Application>
これで未処理例外発生時に OnDispatcherUnhandledException() が呼び出されることになります。
App.xaml.cs に OnDispatcherUnhandledException() を追加し、メソッド内に任意の処理を実装します。
private void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { //==== メッセージ表示 ====// MessageBox.Show(e.Exception.Message); //==== イベント処理完了 ====// e.Handled = true; }
関連があると思われる記事:
- [Android] Should have subtitle controller already set
- [Android] タッチイベント処理
- [Android] The project target was not properly loaded.
- [Android] TextViewでクリック処理
- [Android] Fix Project Properties.
- Newer: [開発環境] マルチサーバ
- Older: [Android] FTPクライアントの実装
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://gacken.com/wp/program/wpf/1805/trackback/
- Listed below are links to weblogs that reference
- [WPF] 未処理例外をキャッチ from ミライニトドケ