Xử lý ngoại lệ là gì, và vì sao cần phải xử lý
Lỗi ngoại lệ chính là lỗi phát sinh khi chương trình đang thực thi. Tất nhiên khi build có thể sẽ không xuất hiện lỗi gì, cho đến khi bạn chạy chương trình, và bắt đầu đưa dữ liệu vào chương trình…
Khi bạn thực thi một chương trình, một chương trình dù lớn hay nhỏ, chắc chắn sẽ có những chỗ sẽ xuất hiện những ngoại lệ nằm ngoài dự đoán của bạn, mà ngay bạn là người viết chương trình củng sẽ không nghĩ đến. Một Exception trong C# là phản hồi về một tình huống ngoại lệ xuất hiện trong khi chương trình đang chạy.
Ví dụ, khi bạn viết một chương trình tính toán, và vô tình người dùng nhập chia số 0, ngay lập tức chương trình của bạn sẽ dừng lại, và có thể nguy hiểm hơn là chương trình của bạn sẽ văng vào source Code. Để xử lý điều này thì tất cả những trường hợp có thể có ngoại lệ chúng ta cần phải xử lí để chương trình có thể tiếp tục chạy khi ngoại lệ xảy ra.
Chương trình sẽ ngừng hoạt động nếu xảy ra lỗi, ở trên là lỗi chia cho 0 (zero). hoặc có thể giá trị người dùng sử dụng vượt qua mức khai báo là kiểu int như trong chương trình.
Để xử lý các trường hợp như này thì chúng ta có thể sử dụng các xử lý trong C#.
Xử lý ngoại lệ với Try, Catch, Finally, Throw…
try: Khối lệnh chương trình mà ở đó có thể phát sinh ra các ngoại lệ.
catch: Xử lý ngoại lệ tại vị trí trong chương trình phát sinh ngoại lệ cần được xử lý, từ khóa catch trong C# chỉ dẫn bắt một xử lý ngoại lệ.
finally: Thực thi một tập lệnh đã cho.
throw: Ném lỗi khi xuất hiện vấn đề, được dùng từ khóa throw trong C#.
Cú pháp xử lý ngoại lệ
try
{
// các lệnh thực thi chương trình có thể gây ra ngoại lệ (Exception)
}
catch( tên các ngoại lệ e1)
{
// các lệnh xử lý ngoại lệ
}
catch( tên các ngoại lệ e2)
{
// các lệnh xử lý ngoại lệ
}
…
catch( tên các ngoại lệ en)
{
// các lệnh xử lý ngoại lệ
}
finally
{
// các lệnh thực thi
}
Một số lớp Exception kế thừa từ lớp SystemException
Ví dụ: Xử lý ngoại lệ chia cho zero
Vẫn là đoạn chương trình ban nảy khi chia cho 0, thì sẽ xuất hiện lỗi ngoại lệ, bây giờ mình sẽ sử dụng try-catch để bắt lỗi này lại để chương trình có thể tiếp tục chạy sau khi có lỗi ngoại lệ xuất hiện.
Và đây là kết quả sau khi bạn xử lí và chia cho 0, chương trình xuất thông báo, và vẫn tiếp tục hoạt động.
Như vậy thì bạn có thể xử lý tất cả những lỗi ngoại lệ có thể xảy ra trong quá trình thực thi chương trình, điều này làm cho ứng dụng của bạn được tối ưu hơn, hoàn thiện hơn, và đây là điều bắt buộc đối với một lập trình.
Trong quá trình thực hiện nếu bạn nào không hiểu, hoặc xảy ra lỗi, hoặc thắc mắc gì, mọi người có thể để lại comment bên dưới, mình sẽ giải đáp sớm nhất có thể trong khả năng của mình :>>
Cảm ơn các bạn đã đọc bài viết này, mọi đóng góp hay thắc mắc mọi người vui lòng để lại comment bên dưới, mình sẽ phản hồi sớm nhất có thể. Chúc các bạn thành công.
Minh Nguyễn
PLT SOLUTIONS