Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 스택 추적을 잃지 않고 InnerException을 다시 발생시키는 방법은 무엇입니까?

<시간/>

C#에서 throw는 키워드이며 프로그램 실행 중에 수동으로 예외를 throw하는 것이 유용하며 요구 사항에 따라 try-catch 블록을 사용하여 throw된 예외를 처리할 수 있습니다.

catch 블록에서 throw 키워드를 사용하여 catch 블록에서 처리되는 예외를 다시 throw할 수 있습니다. 예외를 다시 throw하는 것은 호출자가 원하는 방식으로 예외를 처리하도록 예외를 전달하려는 경우에 유용합니다.

다음은 C#에서 try-catch 블록과 함께 throw 키워드를 사용하여 호출자에게 예외를 다시 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 키워드를 사용하여 호출자에게 예외를 다시 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