Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
263 KB
Nội dung
LẬP TRÌNH JAVAChương NGOẠI LỆ GV: Đoàn Thanh Sơn Nội dung Định nghĩa ngoại lệ (Exception) Bắt giữ & xử lý ngoại lệ Chuyển tiếp (Ném) ngoại lệ Định nghĩa lớp Ngoại lệ 2/25 Định nghĩa ngoại lệ - Ngoại lệ (Exception): kiện xuất trình thực thi chương trình gây phá vỡ dòng thực thi chương trình Có nhóm ngoại lệ sau: Checked: đọc file không tồn Lúc dịch java yêu cầu phải bắt ngoại lệ Runtime: chia số Lúc dịch java không kiểm tra Nhưng LTV cần tiên đoán tự bắt ngoại lệ Errors: stack overflow Ngoài kiểm soát java LTV Lúc dịch java không yêu cầu kiểm tra CT không khôi phục 3/25 Định nghĩa ngoại lệ 4/25 Định nghĩa ngoại lệ Khi đối tượng ngoại lệ phát sinh, thuộc lớp đặc thù thừa kế từ gốc lớp Exception Lớp Exception phương thức thông dụng lớp Exception. toString(): Trả chuỗi mô tả Ngoại lệ. printStackTrace(): In thông tin chi tiết Ngoại lệ, method gây ngoại lệ, dòng code xảy ngoại lệ. 5/25 Định nghĩa ngoại lệ Một số lớp ngoại lệ đặc thù gồm: ArithmeticException: xảy Chương trình có lỗi đại số VD: Chia cho 0. NumberFormatException: Xảy thực chuyển đổi chuỗi không hợp lệ sang kiểu số. NullPointerException: Xảy đối tượng chưa khởi tạo mà truy cập đến thành phần đối tượng đó. ArrayIndexOutOfBoundException: Xảy truy cập đến phần tử mảng có số bé không hoặc lớn kích thước mảng. 6/25 1.Bắt giữ & xử lý ngoại lệ Cú pháp try { // Khối code gây ngoại lệ } catch(ExceptionType name) { // Khối code xử lý ngoại lệ } … catch(ExceptionType name) {…} finally{ // Khối code giải phóng tài nguyên } 7/25 Bắt giữ & xử lý ngoại lệ Khối try kèm khối catch finally Có thể có nhiều khối catch sau khối try Khối finally thực Nhiều khối try … catch lồng 8/25 Bắt giữ & xử lý ngoại lệ public class MyException { public static void main(String args[]){ calculate(9,0); } public static void calculate(int num, int i){ try{ System.out.println(num/i); }catch(ArithmeticException e){ System.out.println("error"); } finally{ System.out.println("finished");} } } 9/25 Bắt giữ & xử lý ngoại lệ 10/25 2.Chuyển tiếp ngoại lệ Ngoại lệ chuyển đến phương thức gọi, quản lý ngoại lệ tìm thấy, kết thúc throw: Dùng để ném ngoại lệ mà không xử lý phương thức. throws: Dùng đế khai báo danh sách ngoại lệ mà phương thức ném 11/25 Chuyển tiếp ngoại lệ public class MyException { public static void main(String args[]){ try{ calculate(9,0); }catch(ArithmeticException e){ System.out.println("error"); }finally{ System.out.println("finished"); } } public static void calculate(int num, int i){ if(i==0) throw new ArithmeticException(); else System.out.println(num/i); } } 12/25 Chuyển tiếp ngoại lệ public class MyException { public static void main(String args[]){ try{ calculate(9,0); }catch(ArithmeticException e){ System.out.println("error"); }finally{ System.out.println("finished"); } } public static void calculate(int num, int i) throws ArithmeticException{ System.out.println(num/i); } } 13/25 Chuyển tiếp ngoại lệ void writeList() throws IOException, ArrayIndexOutOfBoundsException { PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) { out.println("Value at: " + i + " = " + vector.elementAt(i)); } out.close(); } 14/25 Các loại Exception Có loại ngoại lệ • Cần kiểm tra: trình biên dịch kiểm tra xem có viết code xử lý ngoại lệ không Ví dụ: IOException • Không cần kiểm tra Ngoại lệ runtime (Runtime exception) 15/25 Các loại Exception Ví dụ ngoại lệ cần kiểm tra InputStreamReader reader; BufferedReader bufReader; reader = new InputStreamReader(System.in); bufReader = new BufferedReader(reader); try { String s = bufReader.readLine(); } catch (IOException e) { } 16/25 Định nghĩa lớp ngoại lệ Có thể tạo lớp xử lý ngoai lệ riêng cách thừa kế từ lớp Exception từ lớp Exception Cú pháp class MyException extends Exception { } 17/25 Đinh nghĩa lớp ngoại lệ Ví dụ public class MyException extends Exception { public MyException () { } public MyException (String msg) { super (msg); } } 18/25 Thảo luận Ưu điểm phương pháp xử lý ngoại lệ gì? Khi nên sử dụng phương pháp • Bắt xử lý ngoại lệ chỗ: try … catch • Ném ngoại lệ lên lớp trên: throw,throws 19/25 ... lệ 2/ 25 Định nghĩa ngoại lệ - Ngoại lệ (Exception): kiện xuất trình thực thi chương trình gây phá vỡ dòng thực thi chương trình Có nhóm ngoại lệ sau: Checked: đọc file không tồn Lúc dịch java. .. số Lúc dịch java không kiểm tra Nhưng LTV cần tiên đoán tự bắt ngoại lệ Errors: stack overflow Ngoài kiểm soát java LTV Lúc dịch java không yêu cầu kiểm tra CT không khôi phục 3 /25 Định nghĩa... System.out.println("error"); } finally{ System.out.println("finished");} } } 9 /25 Bắt giữ & xử lý ngoại lệ 10 /25 2. Chuyển tiếp ngoại lệ Ngoại lệ chuyển đến phương thức gọi, quản lý ngoại