Chương 3 Ngoại lệ

Đị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ệ mới

pdf18 trang | Chia sẻ: lylyngoc | Lượt xem: 1650 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Chương 3 Ngoại lệ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
LẬP TRÌNH JAVA Chương 3 NGOẠI LỆ GV: Võ Hoàng Phương Dung 2/25 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ệ mới  Ngoại lệ (Exception): là sự kiện xuất hiện trong quá trình thực thi của chương trình và gây phá vỡ dòng thực thi của chương trình.  Ví dụ: đọc 1 file không tồn tại  Lớp Exception • Là lớp cha cho tất cả các lớp thể hiện ngoại lệ. • 2 phương thức thông dụng trong lớp Exception.  toString(): Trả về một chuỗi mô tả về Ngoại lệ.  printStackTrace(): In ra thông tin chi tiết về Ngoại lệ, như các method gây ra ngoại lệ, dòng code xảy ra ngoại lệ. 3/25 Định nghĩa ngoại lệ 4/25 Định nghĩa ngoại lệ  ArithmeticException: xảy ra khi Chương trình có các lỗi đại số. VD: Chia cho 0.  NumberFormatException: Xảy ra khi thực hiện chuyển đổi chuỗi không hợp lệ sang kiểu số.  NullPointerException: Xảy ra khi một đối tượng chưa được khởi tạo mà đã truy cập đến thành phần của đối tượng đó.  ArrayIndexOutOfBoundException: Xảy ra khi truy cập đến phần tử của mảng có chỉ số bé hơn không hoặc hoặc lớn hơn kích thước của mảng. 5/25 Định nghĩa ngoại lệ  Cú pháp try { // Khối code gây ra 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 đi kèm ít nhất 1 khối catch hoặc finally  Có thể có nhiều khối catch sau 1 khối try  Khối finally luôn được thực hiện  Nhiều khối try … catch có thể lồng nhau 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 Bắt giữ & xử lý ngoại lệ  Ngoại lệ được chuyển đến các phương thức gọi, cho đến khi một bộ quản lý ngoại lệ được tìm thấy, hoặc kết thúc.  throw: Dùng để ném ra một ngoại lệ mà không xử lý trong phương thức.  throws: Dùng đế khai báo danh sách các ngoại lệ mà phương thức có thể ném ra 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ệ 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); } } 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 Chuyển tiếp ngoại lệ  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  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ụ 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 Các loại Exception  Có thể tạo 1 lớp xử lý ngoai lệ riêng bằng cách thừa kế từ lớp Exception hoặc từ lớp con của Exception  Cú pháp class MyException extends Exception { ... } 16/25 Định nghĩa lớp ngoại lệ  Ví dụ public class MyException extends Exception { public MyException () { } public MyException (String msg) { super (msg); } } 17/25 Đinh nghĩa lớp ngoại lệ  Ư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 Thảo luận
Tài liệu liên quan