Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
255,76 KB
Nội dung
LẬP TRÌNH JAVA Chương NGOẠI LỆ GV: Võ Hoàng Phương Dung 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 Ví dụ: đọc file không tồn Lớp Exception • Là lớp cha cho tất lớp thể ngoại lệ • 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ệ 3/25 Định nghĩa ngoại lệ 4/25 Định nghĩa ngoại lệ ArithmeticException: xảy Chương trình có lỗi đại số VD: Chia cho 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 5/25 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 } 6/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 7/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");} } 8/25 } Bắt giữ & xử lý ngoại lệ 9/25 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 10/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); } } 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) throws ArithmeticException{ System.out.println(num/i); } } 12/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(); } 13/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) 14/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) { } 15/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 { } 16/25 Đinh nghĩa lớp ngoại lệ Ví dụ public class MyException extends Exception { public MyException () { } public MyException (String msg) { super (msg); } } 17/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 18/25 [...]... MyException extends Exception { } 16/25 Đinh nghĩa lớp ngoại lệ Ví dụ public class MyException extends Exception { public MyException () { } public MyException (String msg) { super (msg); } } 17/25 Thảo luận Ưu điểm của phương pháp xử lý ngoại lệ là gì? Khi nào nên sử dụng phương pháp • Bắt và xử lý ngoại lệ tại chỗ: try … catch • Ném ngoại lệ lên các lớp trên: throw,throws 18/25 ... 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(); } 13/ 25 Các loại Exception Có 2 loại ngoại lệ • Cần kiểm tra: trình biên dịch luôn kiểm tra xem chúng ta có viết code xử lý các ngoại lệ này... Không cần kiểm tra Ngoại lệ runtime (Runtime exception) 14/25 Các loại Exception Ví dụ về ngoại lệ cần được kiểm tra InputStreamReader reader; BufferedReader bufReader; reader = new InputStreamReader(System.in); bufReader = new BufferedReader(reader); try { String s = bufReader.readLine(); } catch (IOException e) { } 15/25 Định nghĩa lớp ngoại lệ Có thể tạo 1 lớp xử lý ngoai lệ riêng bằng cách thừa...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); } } 11/25 Chuyển tiếp ngoại lệ public class MyException ...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... 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ệ 3/ 25 Định nghĩa ngoại lệ 4/25 Định nghĩa ngoại lệ ArithmeticException:... 8/25 } Bắt giữ & xử lý ngoại lệ 9/25 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: