プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

WPFで例外が発生した瞬間を捕捉する

この記事は2019年11月02日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. WPFで例外が発生した瞬間を捕捉する
  3. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているWPFで例外が発生した瞬間を捕捉する方法についてです。

目次へ

2. WPFで例外が発生した瞬間を捕捉する

WPFで例外が発生した瞬間にFirstChanceExceptionイベントが発生します。
そのためFirstChanceExceptionイベントハンドラで、例外が発生した瞬間を検知できます。
ただしこのイベントハンドラでは例外の発生を検知できるだけで、例外は処理できません。

実装例

using System;
using System.Runtime.ExceptionServices;
using System.Windows;

namespace WPFFirstChanceException
{
    /// <summary>
    /// App.xaml の相互作用ロジック
    /// </summary>
    public partial class App : Application
    {
        /**
         * @brief コンストラクタ
         */
        public App()
        {
            // FirstChanceExceptionのイベントハンドラを追加します。
            AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;
        }

        /**
         * @brief 例外が発生した瞬間に呼び出されます。
         */
        private void CurrentDomain_FirstChanceException(object sender, FirstChanceExceptionEventArgs e)
        {
            // 発生した例外の情報を表示します。
            string name = e.Exception.TargetSite.Name;
            string message = e.Exception.Message;
            string errMessage = $"例外が{name}で発生しました。\nエラーメッセージ:{message}";
            MessageBox.Show(errMessage, "エラー", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }
}

目次へ

3. おわりに

WPFで発生した例外を処理する方法をいろいろ調査しました。
その中で、例外を発生した瞬間に発生するイベントがあることがわかりました。

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ