Chương 2 NỀN TẢNG C# CƠ BẢN
2.7 Xử lý ngoại lệ
2.7.1 Xử lý ngoại lệ (Exception)
Xử lý ngoại lệ là một vấn đề xuất hiện trong khi thực thi chương trình. 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ụ trong chương trình có phép tốn chia cho Zero(khơng), trường hợp này sẽ phát sinh ngoại lệ không chia được cho Zero và chúng ta muốn chương trình vẫn tiếp tục chạy thì chúng ta phải xử lý trường hợp ngoại lệ khi chia cho Zero.
Xử lý ngoại lệ: Khi chia cho Zero. Xử lý ngoại lệ trong C# được xây dựng trên những từ khóa: 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#. 2.7.2 Cú pháp chung khi 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) {
Trang 35 // 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 } 2.7.3 Lớp Exception trong C#
Các Exception trong C# được biểu diễn bởi các lớp, các lớp Exception trong C# chủ yếu kế thừa từ lớp System.Exception. Một số lớp kế thừa từ lớp Exception là
ApplicationException và SystemException.
Lớp ApplicationException hỗ trợ các Exception được tạo bởi chương trình ứng dụng.
SystemException: Là lớp cơ sở cho tất cả SystemException
2.7.4 Một số lớp Exception kế thừa từ lớp SystemException
Lớp Exception Mô tả
System.IO.IOException Xử lý ngoại lệ về nhập/ xuất
System.IndexOutOfRangeException Xử lý ngoại lệ khi một phương thức tham chiếu tới một chỉ mục bên ngoài dãy mảng.
System.ArrayTypeMismatchException Xử lý ngoại lệ khi kiểu là không phù hợp với kiểu mảng
System.NullReferenceException Xử lý ngoại lệ từ việc tham chiếu một đối tượng null.
System.DivideByZeroException Xử lý ngoại lệ khi chia cho số 0. System.InvalidCastException Xử lý ngoại lệ trong khi ép kiểu.
Trang 36
System.OutOfMemoryException Xử lý ngoại lệ việc thiếu bộ nhớ
System.StackOverflowException Xử lý ngoại lệ việc tràn ngăn xếp (stack) Ví dụ 1: Xử lý ngoại lệ khi chương trình chia cho zero
Kết quả chương trình
Trang 37
Kết quả chương trình: Nếu có tập tin thì chương trình sẽ đọc nội dung của tập tin ghi ra màn hình
Trang 38
Nếu khơng ghi đúng đường dẫn chương trình sẽ ghi ra trên màn hình
Trang 39