私は自分のエラー報告に電子メールで完全なエラー報告を送信するプロジェクトがあります。私は例外をキャッチし、すべての情報をサポートする電子メールを送信する別のメソッドに渡しています。Exception.Dataを渡す方法
私はException.Dataオブジェクトに重要なカスタム値を追加しています。しかし、Dataオブジェクト全体を渡すために、私のメソッドでどのタイプを使用する必要があるのか理解できません。ここで
私のコードです:
catch (Exception exc)
{
exc.Data.Add("ID", id);
emailConnector.sendErrorEmail(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name.ToString(), exc.Message, exc.Data, exc.StackTrace);
}
私は私が持っているパラメータ宣言になるようsendErrorEmailメソッドにexc.Dataを渡している:
public void sendErrorEmail(string origin, string error_message, IDictionary<object, object> data, string stack)
しかし、私は取得するように見えることはできませんException.Dataの型宣言が正しい。私は変数と構造を同じに保つことを好みます(新しい変数はありません)。私は現在、Catchブロック内でsendErrorEmailを呼び出す数十のメソッドを持っているためです。
このタイプを使用する必要がありますか、このExceptionを取得するための簡単な方法はありますか?それに含まれている関連情報とともに正しくデータが渡されましたか?あなたの問題はあなたがIDictionary<object, object>
として、それを宣言しているのに対し、exc.Data
の種類がIDictionary
であるということであると思われhelp pageを見てみると
おかげ
明確な用途がある場合は、独自の例外を作成します。 http://msdn.microsoft.com/en-us/library/ms229064.aspx – Lloyd
あなたは単純に関数に関数を渡してexc.dataにアクセスしてみませんか? – GianT971
@ GianT971私は数十のメソッドを持っているので、Catchブロックを完全に再構成する必要があります。私は、exc.Dataを渡すことができ、その値をSendErrorEmailの中で取り出すことができるように、最小限の変更だけを行いたいと思っています。 – Encryption