ユーザーが読み取り可能なメッセージや、エラーの追跡には役立つがエンドユーザーには役立たない特定の詳細など、元の例外に情報を追加する必要がある場合は、次を利用できます。キー/値ペアディクショナリであるExceptionのDataプロパティ。
実行中のレポートや処理中のファイルなどの情報を記録して、エラー発生時に何が起こっていたかを操作で判断できるようにするために、これを幅広く使用しています。ユーザーは障害の原因を直接処理しているため、この詳細は必要ありません。
これを使用して、ユーザーにとって意味のあるプレーンテキストメッセージを渡すこともできます。唯一の問題は、データを抽出して消費者に役立つようにするために、ロギングフレームワークまたはエンドユーザーインターフェイスで追加の作業を実行する必要があることです。
たとえば、次のことができます。
catch (Exception ex)
{
ex.Data.Add("UserMessage", "An error occurred while trying to load the XSLT file.");
throw;
}
次に、クライアント側のコードで、UserMessageが存在するかどうかをテストし、存在する場合は、例外の代わりにそれをユーザーに提示できます。
catch (Exception ex)
{
if (ex.Data.Contains("UserMessage"))
{
MessageBox.Show(ex.Data["UserMessage"].ToString());
}
else
{
MessageBox.Show(ex.Message);
}
}