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

WBOY
發布: 2023-08-29 09:29:13
轉載
623 人瀏覽過

如何在 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板