このようなカスタム例外では、余分な応答データを例外「メッセージ」に入れる必要がありますか?
いいえ、セーレンがすでに指摘したように。ただし、例外の種類は、ToString
そこに応答データ情報をオーバーライドして適切に追加することができます。これは、BCL (Base Class Library) の多くの例外タイプが後に続く完全に通常のプラクティスであるため、流れに逆らうことはありません。たとえば、SSCLI (Rotor)のSystem.IO.FileNotFoundException.ToString実装を見てください。
public override String ToString()
{
String s = GetType().FullName + ": " + Message;
if (_fileName != null && _fileName.Length != 0)
s += Environment.NewLine + String.Format(Environment.GetResourceString("IO.FileName_Name"), _fileName);
if (InnerException != null)
s = s + " ---> " + InnerException.ToString();
if (StackTrace != null)
s += Environment.NewLine + StackTrace;
try
{
if(FusionLog!=null)
{
if (s==null)
s=" ";
s+=Environment.NewLine;
s+=Environment.NewLine;
s+="Fusion log follows: ";
s+=Environment.NewLine;
s+=FusionLog;
}
}
catch(SecurityException)
{
}
return s;
}
ご覧のとおり、 FusionLogプロパティのコンテンツを追加します。これは、アセンブリの読み込みに失敗した場合の追加情報を表します。
Elmah にカスタム例外のフィールドから追加情報を記録させるにはどうすればよいですか
ELMAHは、例外を呼び出した結果をエラーの詳細として保存するので、規定どおりに実装してToString
いれば、それ以上の作業を行わなくても情報がログに記録されます。ToString
唯一の問題は、ログに記録される詳細が構造化されていないテキストになることです。