Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
474,46 KB
Nội dung
[...]... 373 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# Câu lệnh finally Trong một số tình huống, việc phát sinh ngoại lệ và unwind stack có thể tạo ra một số vấn đề Ví dụ như nếu chúng ta mở một tập tin hay trường hợp khác là xác nhận một tài nguyên, chúng ta có thể cần thiết một cơ hội để đóng một tập tin hay là giải phóng bộ nhớ đệm mà chương trình đã chiếm giữ trước đó Ghi chú: Trong ngôn ngữ C#, vấn đề này ít... caught divide by zero E1 – DivideByZeroException Để hiểu rõ hơn ta có thể dùng trình debugger để chạy từng bước chương trình khi đó ta sẽ hiểu rõ từng bước thực thi cũng như việc phát sinh các ngoại lệ 384 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# Chương trình bắt đầu với việc gọi hàm DangerousFunc1() trong khối try: try { DangerousFunc1(); } DangerousFunc1() gọi DangerousFunc2(),... chương trình ứng dụng Ngoại lệ của chương trình ứng dụng thì sẽ không kết thúc chương trình Còn ngoại lệ hệ thống thì sẽ kết thúc chương trình Nói chung đó là những ngoại lệ xuất hiện trước đây Hiện nay thì người ta chia ra nhiều mức độ ngoại lệ và tùy theo từng mức độ của ngoại lệ mà chương trình của chúng ta sẽ được nhận những ứng xử khác nhau Để biết thêm chi tiết chúng ta có thể đọc thêm trong tài liệu. .. Sothu2; Bài tập 2: Chương trình sau đây có vấn đề Hãy xác định vấn đề có thể phát sinh ngoại lệ khi chạy chương trình Và viết lại chương trình hoàn chỉnh gồm các lệnh xử lý ngoại lệ: using System; public class Tester { public static void Main() { uint so1=0; int so2, so3; so2 = -10; so3 = 0; // tính giá trị lại 387 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# so1 -= 5; so2... thường xuất hiện Tạo riêng các ngoại lệ CLR cung cấp những kiểu dữ liệu ngoại lệ cơ bản, trong ví dụ trước chúng ta đã tạo một vài các kiểu ngoại lệ riêng Thông thường chúng ta cần thiết phải cung cấp các thông tin mở rộng cho khối catch khi một ngoại lệ được phát sinh Tuy nhiên, có những lúc chúng ta 379 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# muốn cung cấp nhiều thông tin mở rộng hay là các khả năng... - 381 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# Lớp MyCustomException được dẫn xuất từ System.ApplicationException và lớp này không có thực thi hay khai báo gì ngoài một hàm khởi dựng Hàm khởi dựng này lấy tham số là một chuỗi và truyền cho lớp cơ sở Trong trường hợp này, lợi ích của việc tạo ra ngoại lệ là làm nổi bật điều mà chuơng trình muốn minh họa, tức là không cho phép số... Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# } - Kết quả: DivideByZeroException caught! Trong ví dụ này, phương thức DoDivide() sẽ không cho phép chúng ta chia cho zero bởi một số khác, và cũng không cho phép chia số zero Nó sẽ phát sinh một đối tượng của DivideByzeroException nếu chúng ta thực hiện chia với zero Trong toán học việc lấy... chương trình không được đẹp do sử dụng trùng lắp lệnh Ngôn ngữ C# cung cấp một sự thay thế tốt hơn trong khối finally Đoạn chương trình bên trong khối catch được đảm bảo thực thi mà không quan tâm đến việc khi nào thì một ngoại lệ được phát sinh Phương thức TestFunc() trong ví dụ 13.5 minh họa việc mở một tập tin như là hành động đầu tiên của nó, sau đó phương thức thực hiện một vài các phép toán toán học, ... và xử lý các thông điệp ngoại lệ tốt hơn Tìm hiểu những ngoại lệ đem đến cho chúng ta nhiều kinh nghiệm trong việc xây dựng các chương trình phức tạp hơn Câu hỏi thêm Câu hỏi 1: Hãy cho biết các từ khóa được sử dụng để xử lý ngoại lệ? 386 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# Câu hỏi 2: Phân biệt giữa lỗi và ngoại lệ? Câu hỏi 3: Khi thực hiện việc bắt giữ các ngoại lệ Nếu có nhiều mức bắt giữ ngoại lệ... phát sinh hay không một ngoại lệ trong chương trình Ví dụ 13.5: Sử dụng khối finally namespace Programming_CSharp { using System; public class Test { public static void Main() { Test t = new Test(); t.TestFunc(); } // chia hai số và xử lý ngoại lệ nếu có public void TestFunc() { try 374 Xử Lý Ngoại Lệ Ngôn Ngữ Lập Trình C# { Console.WriteLine(“Open file here”); . src="data:image/png;base64,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AFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBHQtSvwAABKQSURBVABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQg/187dmgDAADCQNCw/5pdA8cKhHCnqlEfAABUIAAAKhAAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAqEAAAFQgAAAqEAAAFQgAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAgAoEAEAFAgCgAgEAUIEAAKhAAABUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBUIAAAKhAAABUIAIAKBABABQIAoAIBAFCBAACoQAAAVCAAACoQAAAVCACACgQAQAUCAKACAQBQgQAAqEAAAFQgAAAqEABABQIAoAIBAFCBAACoQAAAVCAAA