Bài giảng Lập trình hướng đối tượng: Chương 6 - Trần Thị Huế
Số trang: 39
Loại file: ppt
Dung lượng: 145.00 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Lập trình hướng đối tượng - Chương 6: Xử lý ngoại lệ. Chương này gồm có những nội dung cụ thể sau: Khái niệm về xử lý ngoại lệ (exception handling), ném và bắt ngoại lệ, khai báo ngoại lệ, ném lại ngoại lệ, định nghĩa ngoại lệ mới, xử lý ngoại lệ trong constructor.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng: Chương 6 - Trần Thị HuếXử lý ngoại lệNội dung Khái niệm về xử lý ngoại lệ (exception handling) Ném và bắt ngoại lệ Khai báo ngoại lệ Ném lại ngoại lệ Định nghĩa ngoại lệ mới Xử lý ngoại lệ trong constructor Xử lý ngoại lệ 2Tài liệu tham khảo Thinking in Java, chapter 9 Java how to program, chapter 15 Xử lý ngoại lệ 3Lỗi và ngoại lệ Mọi đoạn chương trình đều tiềm ẩn khả năng sinh lỗi lỗi chủ quan: do lập trình sai lỗi khách quan: do dữ liệu, do trạng thái của hệ thống Ngoại lệ: các trường hợp hoạt động không bình thường Xử lý ngoại lệ như thế nào làm thế nào để có thể tiếp tục (tái) thực hiện Xử lý ngoại lệ 4Cách xử lý lỗi truyền thống Cài đặt mã xử lý tại nơi phát sinh ra lỗi làm cho chương trình trở nên khó hiểu không phải lúc nào cũng đầy đủ thông tin để xử lý không nhất thiết phải xử lý Truyền trạng thái lên mức trên thông qua tham số, giá trị trả lại hoặc biến tổng thể (flag) dễ nhầm vẫn còn khó hiểu Khó kiểm soát được hết các trường hợp lỗi số học, lỗi bộ nhớ,… Lập trình viên thường quên không xử lý lỗi bản chất con người thiếu kinh nghiệm, cố tình bỏ qua Xử lý ngoại lệ 5Ví dụ (C++)int devide(int num, int denom, int& error){ if (0 != denom) { error = 0; return num/denom; } else { error = 1; return 0; }} Xử lý ngoại lệ 6Xử lý ngoại lệ (Exception handling)trong Java Dựa trên cơ chế ném và bắt ngoại lệ ném ngoại lệ: dừng chương trình và chuyển điều khiển lên mức trên (nơi bắt ngoại lệ) bắt ngoại lệ: xử lý với ngoại lệ Ngoại lệ: là đối tượng mang thông tin về lỗi đã xảy ra ngoại lệ được ném tự động ngoại lệ được ném tường minh Xử lý ngoại lệ 7Phả hệ ngoại lệ trong Java Xử lý ngoại lệ 8Ưu điểm của ném bắt ngoại lệ Dễ sử dụng Dễ dàng chuyển điều khiển đến nơi có khả năng xử lý ngoại lệ có thể ném nhiều loại ngoại lệ Tách xử lý ngoại lệ khỏi thuật toán táchmã xử lý sử dụng cú pháp khác Không bỏ sót ngoại lệ (ném tự động) Làm chương trình dễ đọc hơn, an toàn hơn Xử lý ngoại lệ 9Ưu điểm của ném bắt ngoại lệreadFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file;} Xử lý ngoại lệ 10Ưu điểm của ném bắt ngoại lệopen the file;if (theFileIsOpen) { determine the length of the file; if (gotTheFileLength) { allocate that much memory; if (gotEnoughMemory) { read the file into memory; if (readFailed) { errorCode = -1; }} else { errorCode = -2; } } else { errorCode = -3;} close the file; Xử lý ngoại lệ 11Ưu điểm của ném bắt ngoại lệreadFile {try { open the file; determine its size; allocate that much memory; read the file into memory; close the file;} catch (fileOpenFailed) { doSomething;} catch (sizeDeterminationFailed) { doSomething;} catch (memoryAllocationFailed) { doSomething;} catch (readFailed) { doSomething;} catch (fileCloseFailed) { doSomething;}} Xử lý ngoại lệ 12Ném ngoại lệ (tường minh) Ném ngoại lệ bằng câu lệnh throwif (0==denominator) { throw new Exception();} else res = nominator / denominator; Xử lý ngoại lệ 13Cú pháp try - catch Việc phân tách đoạn chương trình thông thường và phần xử lý ngoại lệ được thể hiện thông qua cú pháp try – catch Khối lệnh try {…}: khối lệnh có khả năng ném ngoại lệ Khối lệnh catch() {…}: bắt và xử lý với ngoại lệtry {// throw an exception}catch (TypeOfException e) { exception-handling statements} Xử lý ngoại lệ 14Ví dụtry { if (0 == denom) { throw new Exception(”denom = 0”); } else res = num/denom;} catch(Exception e) { System.out.println(e.getMessage());} Xử lý ngoại lệ 15Cú pháp try catch finally Có thể bắt nhiều loại ngoại lệ khác nhau bằng cách sử dụng nhiều khối lệnh catch đặt kế tiếp khốilệnh catch sau không thể bắt ngoại lệ là lớp dẫn xuất của ngoại lệ được bắt trong khối lệnh catch trước Khối lệnh finally có thể được đặt cuối cùng để thực hiện các công việc “dọn dẹp” cần thiết finally luôn được thực hiện dù ngoại lệ có được bắt hay không finally được thực hiện cả khi không có ngoại lệ được ném ra Xử lý ngoại lệ 16Cú pháp try catch finallyt ...
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng: Chương 6 - Trần Thị HuếXử lý ngoại lệNội dung Khái niệm về xử lý ngoại lệ (exception handling) Ném và bắt ngoại lệ Khai báo ngoại lệ Ném lại ngoại lệ Định nghĩa ngoại lệ mới Xử lý ngoại lệ trong constructor Xử lý ngoại lệ 2Tài liệu tham khảo Thinking in Java, chapter 9 Java how to program, chapter 15 Xử lý ngoại lệ 3Lỗi và ngoại lệ Mọi đoạn chương trình đều tiềm ẩn khả năng sinh lỗi lỗi chủ quan: do lập trình sai lỗi khách quan: do dữ liệu, do trạng thái của hệ thống Ngoại lệ: các trường hợp hoạt động không bình thường Xử lý ngoại lệ như thế nào làm thế nào để có thể tiếp tục (tái) thực hiện Xử lý ngoại lệ 4Cách xử lý lỗi truyền thống Cài đặt mã xử lý tại nơi phát sinh ra lỗi làm cho chương trình trở nên khó hiểu không phải lúc nào cũng đầy đủ thông tin để xử lý không nhất thiết phải xử lý Truyền trạng thái lên mức trên thông qua tham số, giá trị trả lại hoặc biến tổng thể (flag) dễ nhầm vẫn còn khó hiểu Khó kiểm soát được hết các trường hợp lỗi số học, lỗi bộ nhớ,… Lập trình viên thường quên không xử lý lỗi bản chất con người thiếu kinh nghiệm, cố tình bỏ qua Xử lý ngoại lệ 5Ví dụ (C++)int devide(int num, int denom, int& error){ if (0 != denom) { error = 0; return num/denom; } else { error = 1; return 0; }} Xử lý ngoại lệ 6Xử lý ngoại lệ (Exception handling)trong Java Dựa trên cơ chế ném và bắt ngoại lệ ném ngoại lệ: dừng chương trình và chuyển điều khiển lên mức trên (nơi bắt ngoại lệ) bắt ngoại lệ: xử lý với ngoại lệ Ngoại lệ: là đối tượng mang thông tin về lỗi đã xảy ra ngoại lệ được ném tự động ngoại lệ được ném tường minh Xử lý ngoại lệ 7Phả hệ ngoại lệ trong Java Xử lý ngoại lệ 8Ưu điểm của ném bắt ngoại lệ Dễ sử dụng Dễ dàng chuyển điều khiển đến nơi có khả năng xử lý ngoại lệ có thể ném nhiều loại ngoại lệ Tách xử lý ngoại lệ khỏi thuật toán táchmã xử lý sử dụng cú pháp khác Không bỏ sót ngoại lệ (ném tự động) Làm chương trình dễ đọc hơn, an toàn hơn Xử lý ngoại lệ 9Ưu điểm của ném bắt ngoại lệreadFile { open the file; determine its size; allocate that much memory; read the file into memory; close the file;} Xử lý ngoại lệ 10Ưu điểm của ném bắt ngoại lệopen the file;if (theFileIsOpen) { determine the length of the file; if (gotTheFileLength) { allocate that much memory; if (gotEnoughMemory) { read the file into memory; if (readFailed) { errorCode = -1; }} else { errorCode = -2; } } else { errorCode = -3;} close the file; Xử lý ngoại lệ 11Ưu điểm của ném bắt ngoại lệreadFile {try { open the file; determine its size; allocate that much memory; read the file into memory; close the file;} catch (fileOpenFailed) { doSomething;} catch (sizeDeterminationFailed) { doSomething;} catch (memoryAllocationFailed) { doSomething;} catch (readFailed) { doSomething;} catch (fileCloseFailed) { doSomething;}} Xử lý ngoại lệ 12Ném ngoại lệ (tường minh) Ném ngoại lệ bằng câu lệnh throwif (0==denominator) { throw new Exception();} else res = nominator / denominator; Xử lý ngoại lệ 13Cú pháp try - catch Việc phân tách đoạn chương trình thông thường và phần xử lý ngoại lệ được thể hiện thông qua cú pháp try – catch Khối lệnh try {…}: khối lệnh có khả năng ném ngoại lệ Khối lệnh catch() {…}: bắt và xử lý với ngoại lệtry {// throw an exception}catch (TypeOfException e) { exception-handling statements} Xử lý ngoại lệ 14Ví dụtry { if (0 == denom) { throw new Exception(”denom = 0”); } else res = num/denom;} catch(Exception e) { System.out.println(e.getMessage());} Xử lý ngoại lệ 15Cú pháp try catch finally Có thể bắt nhiều loại ngoại lệ khác nhau bằng cách sử dụng nhiều khối lệnh catch đặt kế tiếp khốilệnh catch sau không thể bắt ngoại lệ là lớp dẫn xuất của ngoại lệ được bắt trong khối lệnh catch trước Khối lệnh finally có thể được đặt cuối cùng để thực hiện các công việc “dọn dẹp” cần thiết finally luôn được thực hiện dù ngoại lệ có được bắt hay không finally được thực hiện cả khi không có ngoại lệ được ném ra Xử lý ngoại lệ 16Cú pháp try catch finallyt ...
Tìm kiếm theo từ khóa liên quan:
Hướng đối tượng Lập trình hướng đối tượng Bài giảng Lập trình hướng đối tượng Công nghệ hướng đối tượng Xử lý ngoại lệ Khai báo ngoại lệGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 276 0 0 -
101 trang 200 1 0
-
14 trang 134 0 0
-
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 112 0 0 -
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 96 0 0 -
Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh
111 trang 95 0 0 -
265 trang 80 0 0
-
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 75 0 0 -
33 trang 70 0 0
-
Ngôn ngữ lập trình C# 2005 - Tập 3: Lập trình hướng đối tượng (Phần 1)
196 trang 51 0 0