Ngoại lệ c ++

Xử lý ngoại lệ(Exception) giúp ứng dụng, chương trình của bạn tránh được những sự cố, lỗi khi thực thi chương trình. Trong C# cung cấp, hỗ trợ việc sử dụng ngoại lệ thông qua các khối lệnh try, catch, finally. Hãy cùng mình tìm hiểu cách sử lý ngoại lệ qua bài viết này nhé

Nội dung bài viết

  • 1 Ngoại lệ Ngoại lệ là gì
  • 2 Cú pháp
  • 3 Lớp ngoại lệ trong C# là gì
  • 4 Ném (ném) các đối tượng trong C#
  • 5 Một số điểm cần lưu ý về xử lý Try/Catch trong C#

Ngoại lệ Exception is anything

Ngoại lệ (hay ngoại lệ) là một vấn đề – phát sinh lỗi khi chương trình được thực thi. Thông thường khi ứng dụng, chương trình đang chạy mà phát sinh ngoại lệ (lỗi) sẽ dẫn đến chương trình bị kết thúc (dừng lại) ngay lập tức. Có rất nhiều nguyên nhân dẫn đến công việc mà chương trình đang chạy mà phát sinh ngoại lệ, ví dụ như

  • Dữ liệu do người dùng nhập vào bị sai, mà chương trình kiểm tra giám sát không được
  • Thực hiện các phép toán không cho phép (ví dụ như chia một số cho 0)
  • Thực hiện thao tác với tài nguyên không tồn tại (ví dụ như mở tệp không có trên đĩa, thực hiện kết nối đến cơ sở dữ liệu không tồn tại…)
  • Do miss memory

Ở trong C# khi có một lỗi(Exeption ) phát sinh thì hầu hết các lỗi đều có thể quản lý bởi thư viện C# thì nó sẽ phát sinh ra một lớp đối tượng Exeption (System. System) hay là một lớp đối tượng nào kế thừa từ Exception

Xử lý ngoại lệ (Xử lý ngoại lệ) trong C# được xây dựng dựa trên 4 từ khóa đó là. thử, bắt, cuối cùng và ném

  • thử. Một khối thử nhận diện mã khối mà ở đó các công cụ ngoại lệ có thể được kích hoạt. Các mã khối được giám sát để bắt lỗi nếu có. nếu có lỗi sẽ phát sinh ngoại lệ Ngoại lệ. Ngoại lệ này bắt lại được trong khối bắt. Theo sau nó bởi một hoặc nhiều khối bắt
  • chụp lấy. Đây là 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 catchopen trong C# chỉ dẫn việc thực hiện bắt một ngoại lệ
  • cuối cùng. Một khối cuối cùng đã được sử dụng để có thể thực thi một tập lệnh đã cho. Dù là có hay không có ngoại lệ bị ném hay không bị ném. Ví dụ như nếu bạn mở một tập tin, nó phải được đóng lại, nếu không sẽ có một ngoại lệ được tạo ra
  • ném. Là một chương trình ném ngoại lệ khi có một vấn đề nào đó xuất hiện. Nó được thực hiện bởi việc sử dụng từ khóa ném trong C#
Ngoại lệ c ++
ngoại lệ trong C#

cú pháp

Ví dụ ta có một khối tạo một Exeption và một phương thức bắt một ngoại lệ bằng cách sử dụng kết hợp các từ khóa try và catch. Ta đặt một khối try/catch xung quanh mã mà có thể xảy ra một ngoại lệ

Mã ở bên trong một khối try/catch được xem như là mã được bảo vệ, và cú pháp để sử dụng try/catch ở trong C# ta viết như sau

try{

// những lệnh có thể gây ra ngoại lệ (exception)

}catch( tên_ngoại_lệ e1 )

{

// phần code để xử lý lỗi}

catch( tên_ngoại_lệ e2 )

{

// phần code để xử lý lỗi}

catch( tên_ngoại_lệ eN )

{

// phần code để xử lý lỗi}

finally{

// các lệnh được thực thi}

Nếu như ngoại lệ (lỗi thực thi) phát sinh mà chúng ta không xử lý thì chương trình sẽ dừng đột ngột. Nếu muốn xử lý ngoại lệ(lỗi), chúng ta cần bắt lấy nó và điều hướng chương trình theo một cách thích hợp

Đối tượng lớp ngoại lệ trong C# có một số thuộc tính, tiện dụng cho bạn giải quyết rắc rối đó là

  • Thông điệp. chuỗi định dạng chứa nội dung thông báo lỗi
  • dấu vết ngăn xếp. Là chuỗi chứa các bước thực thi chương trình cho đến khi bị lỗi (có chứa các phương thức, hàm khi thực thi gây ra lỗi, vị trí tệp lỗi…)
  • Nguồn. Chứa tên ứng dụng hoặc đối tượng bị lỗi

Bạn có thể sử dụng nhiều lệnh bắt để bắt các loại ngoại lệ khác nhau tùy chọn trong từng trường hợp khối thử của bạn xuất hiện nhiều hơn một ngoại lệ và trong các tình huống khác nhau

Ngoại lệ c ++
cách xử lý ngoại lệ

Xem thêm. Csharp là gì?

Thực hiện bắt lỗi

static void Main(string[] args)

{

try {

// khối này được giám sát để bắt lỗi - khi nó phát sinh

int[] mynumbers = new int[] {1,2,3};

int i = mynumbers[10];                  // dòng này phát sinh lỗi

Console.WriteLine(i);                   // dòng này không được thực thi vì lỗi trên

}

catch (Exception loi)

{

// khối này thực thi khi bắt được lỗi

Console.WriteLine("Có lỗi rồi");

Console.WriteLine(loi.Message);

}
}

Có lỗi rồi

Chỉ mục nằm ngoài giới hạn của mảng

Lớp ngoại lệ trong C# là gì

Các ngoại lệ trong C# sẽ được biểu diễn bởi các lớp. Các lớp ngoại lệ trong C# chủ yếu sẽ được kế thừa theo cách trực tiếp hoặc không trực tiếp từ Hệ thống lớp. Ngoại lệ trong C#. Một số lớp Ngoại lệ khác kế thừa từ lớp Hệ thống. Ngoại lệ là các lớp Hệ thống. ApplicationException và Hệ thống. ngoại lệ hệ thống

Lớp Hệ thống. ApplicationException nó hỗ trợ các ngoại lệ được tạo bởi các chương trình ứng dụng. Vì vậy, những ngoại lệ được định nghĩa bởi lập trình viên nên kế thừa từ lớp này

Lớp Hệ thống. SystemException đây là lớp cơ sở cho tất cả ngoại lệ hệ thống tiền định nghĩa

Một số lớp ngoại lệ tiền định nghĩa được kế thừa từ lớp Sytem. SystemException trong C#

Class ExceptionMô tảSystem. IO. IOExceptionXử lý các I/O errorSystem. IndexOutOfRangeExceptionXử lý các lỗi được tạo khi một tham chiếu tham chiếu phương thức tới một mục bên ngoài dãy anar. Hệ thống. ArrayTypeMismatchExceptionXử lý các lỗi được tạo khi kiểu không phù hợp với kiểu mảng. Hệ thống. NullReferenceExceptionXử lý các lỗi được tạo từ việc tham chiếu một đối tượng null. Hệ thống. DivideByZeroExceptionXử lý các lỗi được tạo khi chia cho số 0. Hệ thống. InvalidCastExceptionXử lý lỗi được tạo trong khi ép kiểu. Hệ thống. OutOfMemoryExceptionXử lý lỗi được tạo ra từ việc thiếu bộ nhớ phụ. Hệ thống. StackOverflowExceptionXử lý lỗi được tạo từ ngăn xếp ngăn xếp (stack)

Ném (ném) các đối tượng trong C#

Bạn có thể thực hiện ném một đối tượng nếu nó. hoặc là trực tiếp hoặc gián tiếp được kế thừa từ Lớp Hệ thống. Ngoại lệ trong C#. Bạn có thể sử dụng lệnh ném trong khối bắt để ném đối tượng hiện diện đó

Catch(Exception e)
{
...
Throw e
}

Một số điểm cần lưu ý về xử lý Try/Catch trong C#

  • Khối thử phải được theo sau bởi một khối bắt hoặc cuối cùng hoặc là cả 2
  • Sử dụng các khối try, catch và finally để xử lý các ngoại lệ trong C#
  • Có thể sử dụng nhiều khối bắt để bắt và xử lý nhiều loại ngoại lệ khác nhau
  • Khối cuối cùng sẽ luôn được thực hiện bất kể có hay không có ngoại lệ xảy ra
  • Khối cuối cùng phải đặt sau khối try hoặc catch
  • Trong khối cuối cùng sẽ không sử dụng được các từ khóa return, continue, break vì nó không cho phép di chuyển khỏi khối này
  • Trong C# block try catch nhau được sử dụng
  • Với một ngoại lệ(Exception) nó sẽ được sử dụng ở khối bắt bên trong nếu tìm thấy bộ lọc thích hợp, còn không thì nó sẽ bị bắt và xử lý ở khối bắt bên ngoài
  • Việc sử dụng throw thay vì sử dụng throw ex sẽ giúp lưu dấu vết ngăn xếp Hỗ trợ truy vết và xử lý lỗi dễ dàng hơn

Cảm ơn các bạn đã xem bài viết của mình về try catch c#. Mong nhận được sự đóng góp ý kiến ​​từ các bạn để bài viết được hoàn thiện hơn