首頁  >  文章  >  後端開發  >  如何在 C# 中重新拋出 InnerException 而不丟失堆疊追蹤?

如何在 C# 中重新拋出 InnerException 而不丟失堆疊追蹤?

WBOY
WBOY轉載
2023-08-29 09:29:13617瀏覽

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

在c#中,throw是一個關鍵字,在程式執行過程中手動拋出異常很有用,我們可以根據需要使用try-catch區塊來處理這些拋出的例外。

透過在 catch 區塊中使用 throw 關鍵字,我們可以重新拋出在 catch 區塊中處理的例外狀況。當我們想要將異常傳遞給呼叫者以按照他們想要的方式處理它時,重新拋出異常非常有用。

以下是使用 throw 關鍵字向呼叫者重新拋出例外狀況的範例在 C# 中使用 try-catch 區塊。

範例

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刪除