スタック トレースを失わずに C# で InnerException を再スローするにはどうすればよいですか?

WBOY
リリース: 2023-08-29 09:29:13
転載
628 人が閲覧しました

如何在 C# 中重新抛出 InnerException 而不丢失堆栈跟踪?

C# では、 throw はキーワードです。プログラムの実行中に手動で例外をスローすると便利です。必要に応じて try-catch ブロックを使用して、スローされた例外を処理できます。

catch ブロックで throw キーワードを使用すると、catch ブロックで処理された例外を再スローできます。例外の再スローは、呼び出し元に例外を渡し、希望どおりに処理できるようにする場合に便利です。

以下は、C# で try-catch ブロックを使用して呼び出し元に例外を再スローするための throw キーワードの使用例です。

class Program{
   static void Main(string[] args){
      try{
         Method2();
      }
      catch (System.Exception ex){
         System.Console.WriteLine($"{ex.StackTrace.ToString()} {ex.Message}");
      }
      Console.ReadLine();
   }
   static void Method2(){
      try{
         Method1();
      }
      catch (System.Exception){
         throw;
      }
   }
   static void Method1(){
      try{
         throw new NullReferenceException("Null Exception error");
      }
      catch (System.Exception){
         throw;
      }
   }
}
ログイン後にコピー

これは、catch ブロックで throw キーワードを使用して、必要に応じて呼び出し元に例外を再スローする方法です。

出力

at DemoApplication.Program.Method1() in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 49
at DemoApplication.Program.Method2() in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 37
at DemoApplication.Program.Main(String[] args) in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 24 Null Exception error
ログイン後にコピー

以上がスタック トレースを失わずに C# で InnerException を再スローするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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