ホームページ  >  記事  >  バックエンド開発  >  スタック トレースを失わずに C# で InnerException を再スローするにはどうすればよいですか?

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

WBOY
WBOY転載
2023-08-29 09:29:13567ブラウズ

如何在 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 までご連絡ください。