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

Ngoại lệ trong C #

Một ngoại lệ là một vấn đề phát sinh trong quá trình thực hiện một chương trình. Một ngoại lệ C # là một phản ứng đối với một trường hợp ngoại lệ phát sinh trong khi chương trình đang chạy, chẳng hạn như nỗ lực chia cho số không.

Ngoại lệ cung cấp một cách để chuyển quyền kiểm soát từ một phần của chương trình sang phần khác. Xử lý ngoại lệ C # được xây dựng dựa trên bốn từ khóa -

  • thử - Một khối thử xác định một khối mã mà các ngoại lệ cụ thể được kích hoạt. Theo sau nó là một hoặc nhiều khối bắt.

  • bắt - Một chương trình bắt một ngoại lệ với một trình xử lý ngoại lệ tại vị trí trong một chương trình mà bạn muốn xử lý vấn đề. Từ khóa catch cho biết việc bắt được một ngoại lệ.

  • cuối cùng - Khối cuối cùng được sử dụng để thực hiện một tập hợp các câu lệnh cho trước, cho dù một ngoại lệ được ném hay không được ném. Ví dụ:nếu bạn mở một tệp, tệp đó phải được đóng lại cho dù có ngoại lệ được đưa ra hay không.

  • ném - Một chương trình ném ra một ngoại lệ khi một vấn đề xuất hiện. Điều này được thực hiện bằng cách sử dụng từ khóa ném.

Các ngoại lệ của C # được đại diện bởi các lớp. Các lớp ngoại lệ trong C # chủ yếu được dẫn xuất trực tiếp hoặc gián tiếp từ Hệ thống. Lớp ngoại lệ. Một số lớp ngoại lệ bắt nguồn từ Hệ thống. Lớp ngoại lệ là các lớp System.ApplicationException và System.SystemException.

Ví dụ

Hãy để chúng tôi xem một ví dụ -

using System;
using System.Reflection;
public class Demo {
   public static void Main(){
      Type type = typeof(Subject);
      try {
         FieldInfo fieldInfo = type.GetField("SubName");
         MemberInfo[] info = type.GetMember("SubName");
         Console.Write("Members = ");
         for (int i = 0; i < info.Length; i++)
            Console.WriteLine(" {0}", info[i]);
         Console.WriteLine("FieldInfo = {0}", fieldInfo);
      }
      catch (ArgumentNullException e){
         Console.Write("{0}", e.GetType(), e.Message);
      }
   }
}
public class Subject{
   public string SubName = "Science";
}

Đầu ra

Điều này sẽ tạo ra kết quả sau -

Members = System.String SubName
FieldInfo = System.String SubName

Ví dụ

Bây giờ chúng ta hãy xem một ví dụ khác -

using System;
public class Demo {
   int result;
   Demo() {
      result = 0;
   }
   public void division(int num1, int num2) {
      try {
         result = num1 / num2;
      }
      catch (DivideByZeroException e) {
         Console.WriteLine("Exception caught = {0}", e);
      }
      finally {
         Console.WriteLine("Result = {0}", result);
      }
   }
   public static void Main(string[] args) {
      Demo d = new Demo();
      d.division(100, 0);
   }
}

Đầu ra

Điều này sẽ tạo ra kết quả sau -

Exception caught = System.DivideByZeroException: Attempted to divide by zero.
   at Demo.division(Int32 num1, Int32 num2) in d:\Windows\Temp\n0kebv45.0.cs:line 11 
Result = 0