Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีการส่ง InnerException ใหม่โดยไม่สูญเสียการติดตามสแต็กใน C #


ใน c# การ throw เป็นคีย์เวิร์ดและเป็นประโยชน์ในการโยนข้อยกเว้นด้วยตนเองระหว่างการทำงานของโปรแกรม และเราสามารถจัดการกับข้อยกเว้นที่เกิดขึ้นโดยใช้บล็อก try−catch ตามความต้องการของเรา

ด้วยการใช้คีย์เวิร์ด throw ในบล็อก catch เราสามารถโยนข้อยกเว้นที่ได้รับการจัดการในบล็อก catch อีกครั้งได้ การโยนข้อยกเว้นใหม่มีประโยชน์เมื่อเราต้องการส่งข้อยกเว้นไปยังผู้โทรเพื่อจัดการในลักษณะที่พวกเขาต้องการ

ต่อไปนี้คือตัวอย่างของการโยนข้อยกเว้นให้กับผู้โทรอีกครั้งโดยใช้คีย์เวิร์ด throw โดยมีบล็อก try-catch ใน c#

ตัวอย่าง

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;
      }
   }
}

นี่คือวิธีที่เราสามารถส่งข้อยกเว้นให้กับผู้โทรอีกครั้งโดยใช้คีย์เวิร์ด throw ในบล็อก catch ตามความต้องการของเรา

ผลลัพธ์

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