Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để ném lại InnerException mà không làm mất dấu vết ngăn xếp trong C #?

Trong c #, ném là một từ khóa và sẽ rất hữu ích nếu bạn ném một ngoại lệ theo cách thủ công trong quá trình thực thi chương trình và chúng ta có thể xử lý những ngoại lệ đã ném đó bằng cách sử dụng các khối try-catch dựa trên yêu cầu của chúng ta.

Bằng cách sử dụng từ khóa ném trong khối catch, chúng ta có thể ném lại một ngoại lệ được xử lý trong khối catch. Việc ném lại một ngoại lệ rất hữu ích khi chúng ta muốn chuyển một ngoại lệ cho người gọi để xử lý nó theo cách họ muốn.

Sau đây là ví dụ về việc ném lại một ngoại lệ cho người gọi bằng cách sử dụng từ khóa ném với các khối try-catch trong c #.

Ví dụ

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

Đây là cách chúng tôi có thể ném lại một ngoại lệ cho trình gọi bằng cách sử dụng từ khóa ném trong khối bắt dựa trên yêu cầu của chúng tôi.

Đầu ra

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