スタック トレースにテキストをスローできますか?
私のアプリケーションは、スローされた例外を既に把握しています。しかし、いくつかのメソッド (パラメーター) に関する詳細情報が必要です。
アイデアは次のようなことをすることでした
StackTrace.Insert (0, "argument:" + test);
私はこれがクールではないことを知っていますが、それは可能ですか?
スタック トレースにテキストをスローできますか?
私のアプリケーションは、スローされた例外を既に把握しています。しかし、いくつかのメソッド (パラメーター) に関する詳細情報が必要です。
アイデアは次のようなことをすることでした
StackTrace.Insert (0, "argument:" + test);
私はこれがクールではないことを知っていますが、それは可能ですか?
@erikHの優れた回答に追加するだけです:
プロパティを使用するData
ことに加えて、例外チェーンの上位で使用可能な追加データが必要な場合は、カスタム例外を使用してこれを行うことができます。カスタム型が提供できるメタ情報 ( CommunicationException
I/O の問題を意味する場合InvalidStateException
や、プログラムが無効な状態に遭遇したことを意味する場合など) に加えて、追加情報を次の形式で例外に追加できます。カスタムフィールド。Data
カスタム フィールドは、プロパティが提供しない型の安全性が必要な場合に特に便利です。
定義上、スタック トレースは、プログラムの現在の実行ポイントにあるアクティブなスタック フレームの出力であり、通常は例外を介してアクセスされます。
@David Yaw は、例外スタックをバブルアップするため、スタック トレースに追加情報を追加する正しい方法を提供してくれました。言い換えると、例外の結果である場合にのみ、カスタム データをスタック トレースに追加する必要があります。
ロギング データを格納するための一元的にアクセス可能な List コレクションを作成するか、David が推奨する例外バブリングで適切な try/catch を使用します。
例えば。
try
{
doSomethingThatMightFailAndThrowAnException();
}
catch (Exception ex)
{
throw new Exception("Here is some custom data to add to the trace...",ex);
// Notice adding the ex as the second parameter preserves the original exception trace
}