ホームページ > バックエンド開発 > C++ > .NETで例外を再スローするときにスタックトレースとInnerExceptionを保持する方法は?

.NETで例外を再スローするときにスタックトレースとInnerExceptionを保持する方法は?

DDD
リリース: 2025-01-25 20:06:10
オリジナル
161 人が閲覧しました

How to Preserve Stack Trace and InnerException When Re-throwing Exceptions in .NET?

.NET例外処理ベストプラクティス:スタック追跡とincexceptionを保持

異常な治療では、正しいエラー追跡と回復を確保するために、ベストプラクティスを順守することが不可欠です。考慮すべき1つの側面は、異常な異常を再投与するときに元の異常を保持するインセックスとスタック追跡です。

次の2つのコードブロックを検討してください:

一見すると、これらの2つのコードブロックは似ているようです。ただし、わずかな違いがあります。最初のコードブロックは、キャプチャ異常を再び表示し、インセックスとスタックの追跡が保持されるようにします。 2番目のコードブロックは、略語「スロー」を使用します。これにより、現在のスタック追跡がカバーされます。
<code class="language-csharp">try
{
    //某些代码
}
catch (Exception ex)
{
    throw ex; // 这种方式会保留原始异常信息,但会丢失调用堆栈信息的一部分
}</code>
ログイン後にコピー
<code class="language-csharp">try
{
    //某些代码
}
catch (Exception ex)
{
    throw; // 这种方式会保留完整的调用堆栈信息
}</code>
ログイン後にコピー
スタックトラッキングを保持するには、異常を指定しない「スロー」を使用することをお勧めします。これにより、発信者への元の異常なスタックトラッキングが可能になります。

または、次の形式を使用して、異常とその元のスタック追跡を再投げることができます:

異常を再投与する際に、元の異常をパラメーターとして渡すことは良い習慣であることに留意してください。これにより、追加情報を広めることができ、デバッグが役立ちます。 より推奨される方法は、完全なスタック追跡情報を保持するために

ではなくを使用することです。 異常な異常を再投与するときに追加のコンテキスト情報を追加する必要がある場合は、新しい異常なオブジェクトを作成し、元の異常を
<code class="language-csharp">try {
  // 这里发生错误的代码
} catch (Exception ex)
{
    throw; // 保留完整的堆栈跟踪
}</code>
ログイン後にコピー
として送信できます。

以上が.NETで例外を再スローするときにスタックトレースとInnerExceptionを保持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート