Danh mục

Bài giảng Ngôn ngữ lập trình Java: Xử lý ngoại lệ (Exception) - TS. Nguyễn Thị Hiền

Số trang: 33      Loại file: ppt      Dung lượng: 436.00 KB      Lượt xem: 16      Lượt tải: 0    
Hoai.2512

Phí tải xuống: 9,000 VND Tải xuống file đầy đủ (33 trang) 0
Xem trước 0 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài này cung cấp kiến thức về xử lý ngoại lệ (Exception). Nội dung chính trong bài giảng gồm: Xử lý lỗi và ngoại lệ, khối try/catch/finally, các lớp ngoại lệ, xây dựng lớp ngoại lệ, lan truyền ngoại lệ, tung lại ngoại lệ. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình Java: Xử lý ngoại lệ (Exception) - TS. Nguyễn Thị Hiền LECTURE 5XỬ LÝ NGOẠI LỆ (EXCEPTION) 1. Xử lý lỗi và ngoại lệ 2. Khối try/catch/finally 3. Các lớp ngoại lệ 4. Xây dựng lớp ngoại lệ 5. Lan truyền ngoại lệ 6. Tung lại ngoại lệ 7. Bài tậpNGOẠI LỆ • Ngoại lệ là một sự kiện. Mà khi sự kiện đó phát sinh, làm gián đoạn hoặc thay đổi dòng chảy bình thường của chương trình. • Khi một phương thức gặp lỗi nào đó, ví dụ như chia không, vượt kích thước mảng, mở file chưa tồn tại… thì các ngoại lệ sẽ được ném ra. Chương trình dừng lại ngay lập tức, toàn bộ phần mã phía sau sẽ không được thực thi. • Java hỗ trợ cách thức để xử lý ngoại lệ (exception handling) tuỳ theo nhu cầu của chương trình. 2XỬ LÝ LỖI TRUYỀN THỐNG • Trong một số ngôn ngữ như C, việc xử lý lỗi thường được cài đặt ngay tại các bước thực hiện của chương trình. Các hàm sẽ trả về một cấu trúc lỗi khi gặp lỗi. • Ví dụ: int ERROR1=0; ERROR2=1; int f1(double x, double y){// Tính biểu thức 1/x+1/(y-1) if (x==0) return ERROR1; else { if (y==1) return ERROR2; else return 1/x+1/(y-1); } } int f2(double x, double y, double z){// tính z(1/x+1/(y-1)) if (f1(x,y)==ERROR1) …. if (f1(x,y)==ERROR2) …. return z*f1(x,y); } 3XỬ LÝ LỖI TRUYỀN THỐNG Mã lệnh và mã xử lý lỗi nằm xen kẽ khiến lập trình viên khó theo dõi được thuật toán chính của chương trình. Khi một lỗi xảy ra tại hàm A, tất cả các lời gọi hàm lồng nhau đến A đều phải xử lý lỗi mà A trả về. 4XỬ LÝ NGOẠI LỆ• Trong Java, việc xử lý lỗi có thể được cài đặt trong một nhánh độc lập với nhánh chính của chương trình.• Lỗi được coi như những trường hợp ngoại lệ (exceptional conditions). Chúng được bắt/ném (catch and throw) khi có lỗi xảy ra. => Một trường hợp lỗi sẽ chỉ được xử lý tại nơi cần xử lý. => Mã chính của chương trình sáng sủa, đúng với thiết kế thuật toán. 5VÍ DỤ 1 import java.awt.Point; public class MyArray { public static void main(String[ ] args) { System.out.println(Goi phuong thuc methodeX()); methodeX(); System.out.println(Chuong trinh ket thuc binh thuong); } public static void methodeX() { Point[ ] pts = new Point[10]; for(int i = 0; i < pts.length; i++) { pts[i].x = i; // chua tao object pts[i].y = i+1; } } } 6KẾT QUẢ THỰC THI VÍ DỤ 1 GoiphuongthucmethodeX() Exceptioninthreadmainjava.lang.NullPointerException atMyArray.methodeX(MyArray.java:14) atMyArray.main(MyArray.java:7) Giảithích:Hệthốngđãtungramộtexceptionthuộclớp NullPointerExceptionkhigặplỗi.Sauđóchươngtrìnhkếtthúc. 7VÍ DỤ 2 public class MyDivision { public static void main(String[ ] args) { System.out.println(Goi phuong thuc A()); A(); System.out.println(Chuong trinh ket thuc binh thuong); } public static void A() { B(); } public static void B() { C(); } public static void C() { float a = 2/0; } } 8KẾT QUẢ THỰC THI VÍ DỤ 2 GoiphuongthucA() Exceptioninthreadmainjava.lang.ArithmeticException:/byzero atMyDivision.C(MyDivision.java:14) atMyDivision.B(MyDivision.java:11) atMyDivision.A(MyDivision.java:8) atMyDivision.main(MyDivision.java:4) Giảithích:PhươngthứcA()gọiB(),B()gọiC(),C()gâyralỗichiacho 0vàhệthống“ném”ramộtexceptionthuộclớpArithmeticException. Sauđóchươngtrìnhkếtthúc. 9XỬ LÝ NGOẠI LỆ • Khối try/catch – Đặt đoạn mã có khả năng xảy ra ngoại lệ trong khối try – Đặt đoạn mã xử lý ngoại lệ trong khối catch – Khi xảy ra ngoại lệ trong khối try, các câu lệnh trong khối catch sẽ được thực hiện tuỳ vào kiểu của ngoại lệ. – Sau khi thực hiện xong khối catch, điều khiển sẽ được trả lại cho chương trình. 10KHỐI TRY/CATCH • Ví dụ 1: try { methodeX(); System.out.println(“CaulenhngaysaumethodX()”); } catch(NullPointerExceptione) { System.out.println(“Coloitrongkhoitry”); } System.out. ...

Tài liệu được xem nhiều: