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

WBOY
풀어 주다: 2023-08-29 09:29:13
앞으로
627명이 탐색했습니다.

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

C#에서 throw는 프로그램 실행 중에 예외를 수동으로 발생시키는 데 유용한 키워드입니다. try-catch 블록을 사용하여 필요에 따라 이러한 발생된 예외를 처리할 수 있습니다.

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

다음은 C#에서 try-catch 블록을 사용하여 throw 키워드를 사용하여 호출자에게 예외를 다시 발생시키는 예입니다.

Example

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿