独自のカスタム例外を作成するためのベスト プラクティスは何ですか?
質問
のフォローアップで 前の質問 例外に関して、.NET でカスタム例外を作成するためのベスト プラクティスは何ですか?
より具体的には、System.Exception、System.ApplicationException、またはその他の基本例外から継承する必要がありますか?
解決
継承元 System.Exception
. System.ApplicationException
それは役に立たず、設計ガイドラインには次のように書かれています。しないでください 投げる、またはそこから派生する System.ApplicationException
."
見る http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
他のヒント
C# IDE で、「例外」と入力し、Tab キーを押します。これを展開すると、新しい例外タイプの作成を開始できます。例外の実践に関するいくつかの議論へのリンクを含むコメントがあります。
個人的に、私は例外型にまで及ぶ小さなクラスをたくさん作成することが大好きです。たとえば、Foo クラスを作成する場合、次のいずれかを選択できます。
throw new Exception("Bar happened in Foo");
throw new FooException("Bar happened");
throw new FooBarException();
どこ
class FooException : Exception
{
public FooException(string message) ...
}
そして
class FooBarException : FooException
{
public FooBarException()
: base ("Bar happened")
{
}
}
私は 3 番目のオプションを好みます。これは OO ソリューションであると考えているからです。
そのコードスニペットがあります。それを使ってください。さらに、後でコード分析を確認してください。このスニペットでは、実装する必要があるコンストラクターの 1 つが省略されています。
あらゆるレベル (カスタムの作成、スロー、キャッチ) で例外を扱うときに覚えておくべき最も重要なことは、例外は例外的な条件に対してのみ存在するということだと思います。
他のすべての例外の継承元となる基本例外は System.Exception です。もちろん、より具体的な例外のデフォルト メッセージなどを使用する場合を除き、これを継承する必要があります。