もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
「例外設定」の画面で、例外が発生したときにVisualStudioでプログラムを止めてくれるように設定できるが、元々ある例外に対してしかその設定をしたことがなかった。自前で作った例外でも同じことがしたくなったので、やり方調べたい。
やりかた
「例外設定」画面で、止める例外に自前の例外を追加する。
使ったサンプルコード
今回、下記のようなサンプルコードを使って、「MyExceptionTest」ネームスペースに「MyException」という例外を作ったことにする。
using System.Diagnostics; namespace MyExceptionTest { internal class Program { static void Main(string[] args) { try { throw new MyException(); } catch (Exception ex) { Debug.WriteLine("例外発生:" + ex.ToString()); } } } [Serializable()] public class MyException : Exception { public MyException() : base() { } public MyException(string message) : base(message) { } public MyException(string message, System.Exception inner) : base(message, inner) { } protected MyException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { } } }
やり方詳細
メニューで、
[デバッグ] > [ウインドウ] > [例外設定]
を選択し、例外設定画面を開く。
下記のように例外設定画面が表示されるので、
表示された例外カテゴリの中のどれか一つを選択する。
(今回はCommon Language Runtime Exception
を選んだ)
例外設定画面上部の、緑の「+」マークを押すと、下図のように、「例外の種類」を入力できるようになるので、
そこに、ネームスペースから、例外の名前を入力する。
※ネームスペースを入れないと、うまく止まってくれない。
ここまで設定してから、上で挙げたサンプルプログラムを実行すると、tryの中のthrow new MyException();
の部分で、指定の例外が上がった時点で、
こんな感じで止めてくれる。
これで、やりたいことができた。
参考
MS公式 自前例外の作り方
https://learn.microsoft.com/ja-jp/dotnet/standard/exceptions/how-to-create-user-defined-exceptions
MS公式でない 自前例外の作り方
https://www.ipentec.com/document/csharp-define-throw-unique-exception