Chủ Nhật , 25 Tháng Mười 2020
Trang chủ / HỌC LẬP TRÌNH / C# [C Sharp] / [Học lập trình] – C# – [Bài 33] Xử lý ngoại lệ trong C#

[Học lập trình] – C# – [Bài 33] Xử lý ngoại lệ trong C#

Xử lý ngoại lệ trong – Try..Catch


Ngoại lệ trong C#

Khi thực thi mã nguồn C#, một số lỗi khác nhau có thể xảy ra: lỗi mã nguồn do lập trình viên, lỗi do đầu vào sai, hoặc các lỗi không lường trước.

Khi một lỗi xảy ra, C# sẽ dừng và tạo ra một thông báo lỗi. Thuật ngữ kỹ thuật là: C# sẽ đưa ra một ngoại lệ – exception (đưa ra một lỗi).


Sử dụng try và catch trong C#

Câu lệnh try cho phép chúng ta định nghĩa một khối lệnh được kiểm tra lỗi trong khi được thực thi.

Câu lệnh catch cho phép chúng ta định nghĩa một khối lệnh sẽ được thực thi nếu có lỗi phát sinh trong khối try.

Các từ khóa try và catch đi thành một cặp:

Cú pháp

try 
{
  //  Block of code to try
}
catch (Exception e)
{
  //  Block of code to handle errors
}

Xem ví dụ sau, chúng ta tạo một mảng gồm 3 số kiểu integer:

int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!

Câu lệnh trên sẽ tạo ra một lỗi, bởi vì myNumbers[10] không tồn tại.

Thông điệp lỗi sẽ giống như sau:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

Nếu một lỗi xảy ra, chúng ta có thể sử dụng câu lệnh try…catch để bắt lỗi và thực thi mã nguồn xử lý lỗi đó.

Trong ví dụ sau, chúng ta sử dụng biến bên trong khối catch (e) cùng với thuộc tính Message, mà đầu ra là một thông điệp mô tả ngoại lệ:

Ví dụ

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine(e.Message);
}

Kết quả là: Index was outside the bounds of the array.

Bạn cũng có thể xuất ra thông điệp lỗi của riêng bạn:

Ví dụ

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}

Kết quả là:Something went wrong.

Chạy ví dụ »


Câu lệnh Finally

Câu lệnh finally cho phép chúng ta thực thi mã nguồn sau câu lệnh try…catch bất kể kết quả là gì:

Ví dụ

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}
finally
{
  Console.WriteLine("The 'try catch' is finished.");
}

Kết quả là:

Something went wrong.
The 'try catch' is finished.

Chạy ví dụ »


Từ khóa throw

Câu lệnh throw cho phép chúng ta tạo một thông điệp lỗi tùy ý.

Câu lệnh throw được sử dụng cùng với các lớp exception. Có nhiều lớp ngoại lệ (exception classe) sẵn có trong C#:

ArithmeticExceptionFileNotFoundExceptionIndexOutOfRangeExceptionTimeOutException

Ví dụ

static void checkAge(int age)
{
  if (age < 18)
  {
    throw new ArithmeticException("Access denied - You must be at least 18 years old.");
  }
  else
  {
    Console.WriteLine("Access granted - You are old enough!");
  }
}

static void Main(string[] args)
{
  checkAge(15);
}

Thông điệp lỗi hiển thị trong chương trình là:

System.ArithmeticException: 'Access denied - You must be at least 18 years old.'

Nếu age là 20, chúng ta sẽ không nhận được lỗi:

Ví dụ

checkAge(20);

Kết quả là:Access granted - You are old enough!

Chạy ví dụ »

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *