Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
191 KB
Nội dung
Xửlýngoạilệ Nội dung Tình phát sinh ngoạilệ Cách xửlýngoạilệ làm việc C# Câu lệnh try-catch-finally Tình Những lỗi phát sinh rutime làm hư hại chương trình Khơng phải lỗi lập trình VD: số tình viết liệu vào file Đĩa bị đầy Lỗi phần cứng File bị thay đổi thành đọc … Cách xửlý trước GET A FILENAME OPEN THE FILE IF THERE IS NO ERROR OPENING THE FILE READ SOME DATA IF THERE IS NO ERROR READING THE DATA PROCESS THE DATA WRITE THE DATA IF THERE IS NO ERROR WRITING THE DATA CLOSE THE FILE IF THERE IS NO ERROR CLOSING FILE RETURN Hầu hết bước có khả thất bại Khó xác định xác lỗi từ thông tin trả hàm thư viện Đoạn code phải thực biết lỗi Cách xửlý Exception TRY TO DO THESE THINGS: GET A FILENAME OPEN THE FILE READ SOME DATA PROCESS THE DATA WRITE THE DATA CLOSE THE FILE RETURN IF ERROR OPENING THE FILE THEN IF ERROR READING THE DATA THEN IF ERROR WRITING THE DATA THEN IF ERROR CLOSING THE FILE THEN Đoạn code xửlý ngắn gọn, dễ đọc Logic chương trình hợp lý hơn, đoạn nghi ngờ có lỗi nằm vùng Try Cho phép xửlý tình lỗi rõ ràng đơn giản Các đối tượng Exception Trong C#, runtime error xuất CLR xác định lỗi phát sinh ta đối tượng Exception Đối tượng Exception ném trở lại stack chờ cho phương thức bắt lỗi Nếu Exception khơng chương trình “catch” CRL in thơng điệp lỗi Mơ hình gọi – xửlý Exception CLR Runtime The Main( ) method Exceptions Passed Up First Method Exception Thrown Here Method Calls Travel Down Sử dụng try-catch Dùng Try-catch để xửlýngoạilệ Đặt code có khả dẫn đến ngoạilệ vào khối “try” Cung cấp khối “catch” theo sau “try” Có thể cung cấp tất catch cho lỗi muốn xử lý, cách sử dụng lớp exception thích hợp Nếu khơng cung cấp catch cho ngoại lệ, exception đượn lan truyền lên Cú pháp Try-Catch Code có khả dẫn đến lỗi try { RiskyBussiness(); } catch (SomeException e ) { // Handle code } Tham số exception catch Đoạn xửlý với tình có lỗi Khối try Bao gồm phần Từ khóa try Theo sau khối “{…}” Khối “{…}” bắt buộc phải có, khác với “{…}” if hay for Bên khối try Đặt câu lệnh có khả phát sinh ngoạilệ Khối catch Đặt hay nhiều sau khối try Khơng có lệnh chen hai khối catch try Cú pháp khối catch sau catch (Exception-class [var1]) { // xửlýngoạilệ } catch (Exception-class [var2]) { // xửlýngoạilệ } Ví dụ try-catch Chương trình bị terminate Chương trình kết thúc bình thường Sử dụng Finally Khi exception ném Luồng thực thi nhảy vào khối catch xửlý Một số đoạn code giải phóng tài nguyên bị bỏ qua Open File Read Data Close File // ngoạilệ phát sinh // đoạn code bị bỏ qua, dù file chưa đóng Khối try-catch có phần option finally Luôn gọi Sử dụng để dọn dẹp tài nguyên nắm giữ VD có try-catch-finally Ln thực thi dù có hay khơng có ngoạilệ Lệnh throw Cho phép ném ngoạilệ Cú pháp: throw exception_object Phát sinh ngoạilệ Lớp Exception Có loại ngoạilệ Ngoạilệ phát sinh chương trình Ngoạilệ tạo CLR Lớp System.Exception sở cho tất lớp C# lớp kế thừa từ lớp này: ApplicationException: thường làm lớp cho lớp ngoạilệ phát sinh từ ứng dụng SystemException: CLR phát sinh Lớp Exception (2) Một số lớp Exception thường dùng System.OutOfMemoryException System.NullReferenceException Syste.InvalidCastException Syste.ArrayTypeMismatchException System.IndexOutOfRangeException System.ArithmeticException System.DevideByZeroException System.OverFlowException Tự tạo lớp exception VD truy xuất file Tóm tắt Exception làm cho chương trình chặt chẽ Tránh tetminal chương trình đột ngột lỗi runtime Tập lớp Exception đa dạng, bao hàm vấn đề phát sinh lúc runtime Lớp Exception lớp sở cho lớp xửlýngoạilệ NET Dễ dàng định nghĩa lớp ngoại lệ, phát sinh ngoạilệ chương trình ... Exception TRY TO DO THESE THINGS: GET A FILENAME OPEN THE FILE READ SOME DATA PROCESS THE DATA WRITE THE DATA CLOSE THE FILE RETURN IF ERROR OPENING THE FILE THEN IF ERROR READING THE DATA THEN... Lỗi phần cứng File bị thay đổi thành đọc … Cách xử lý trước GET A FILENAME OPEN THE FILE IF THERE IS NO ERROR OPENING THE FILE READ SOME DATA IF THERE IS NO ERROR READING THE DATA PROCESS THE... lệnh try-catch-finally Tình Những lỗi phát sinh rutime làm hư hại chương trình Khơng phải lỗi lập trình VD: số tình viết liệu vào file Đĩa bị đầy Lỗi phần cứng File bị thay đổi thành