1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình Java - Chương 4.2: Ngoại lệ

29 14 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Bài giảng Kỹ thuật lập trình Java - Chương 4.2: Ngoại lệ cung cấp cho người đọc các kiến thức: Phân loại lỗi, ngoại lệ, xử lý ngoại lệ, phân cấp ngoại lệ trong Java, ngoại lệ do người dùng định nghĩa. Mời các bạn cùng tham khảo nội dung chi tiết.

Chương 4.2 Ngoại lệ Chương 4.2: Ngoại lệ o o o o o Phân loại lỗi Ngoại lệ Xử lý ngoại lệ Phân cấp ngoại lệ Java Ngoại lệ người dùng định nghĩa Phân loại lỗi Cú pháp Lỗi Luận lý Thực thi Lỗi cú pháp Phát sinh trình viết code cho chương trình: sai cú pháp, kiểu,… Khi biên dịch phát lỗi Lỗi thực thi Phát sinh trình thực thi chương trình Các lỗi thực thi thường gặp • • • • • Lỗi chia cho Truy cập phần tử vượt giới hạn mảng Truy cập nhớ Không mở file Lỗi kết nối sở liệu Khi gặp lỗi thực thi chương trình kết thúc khơng bình thường Lỗi luận lý Những hoạt động dẫn đến trạng thái chương trình khơng Có thể không dẫn đến lỗi thực thi Phát việc dùng debug code Ngoại lệ Ngoại lệ lỗi phát sinh trình thực thi chương trình Nếu khơng cung cấp mã xử lý ngoại lệ chương trình kết thúc khơng bình thường Ngoại lệ import java.util.*; public class Exception_Ex1 { public static void main(String[] args){ Scanner scanIn=new Scanner(System.in); System.out.print("Enter the first number (a):"); int a = scanIn.nextInt(); System.out.print("Enter the second number (b):"); int b = scanIn.nextInt(); System.out.print("a/b = " + a/b); } } Xử lý ngoại lệ truyền thống o Viết mã xử lý nơi phát sinh lỗi  Làm cho chương trình trở nên rối  Khơng phải lúc đầy đủ thông tin để xử lý  Không thiết phải xử lý o Truyền trạng thái lên mức  Thông qua tham số, giá trị trả lại biến tổng thể (flag)  Dễ nhầm  Vẫn cịn khó hiểu Xử lý ngoại lệ truyền thống o Khó kiểm sốt hết trường hợp  Lỗi số học, lỗi nhớ,… o Lập trình viên thường quên không xử lý lỗi  Bản chất người  Thiếu kinh nghiệm, cố tình bỏ qua Khối try – catch lồng o Những phần nhỏ khối mã sinh lỗi, toàn khối lại sinh lỗi khác -> Cần có xử lý ngoại lệ lồng o Khi khối try lồng nhau, khối try bên thực trước try { // Doan code co the gay IOException try { // Doan ma co the gay NumberFormatException } catch (NumberFormatException e1) { // Xu ly loi sai dinh dang so } } catch (IOException e2) { // Xu ly loi vao } Nhiều khối catch o Một đoạn mã gây nhiều ngoại lệ ->Sử dụng nhiều khối catch try { // Doan ma co the gay nhieu ngoai le, loi nhap/xuat, chia cho 0,… } catch (ExceptionType1 e1) { // Xu ly ngoai le } catch (ExceptionType2 e2) { // Xu ly ngoai le } Nhiều khối catch class MultipleCatch1{ public static void main(String args[]){ try{ String num = args[0]; int numValue = Integer.parseInt(num); System.out.println("Dien tich hv la: " + numValue * numValue); }catch(ArrayIndexOutOfBoundsException e1) { System.out.println(“Hay nhap canh cua hv!"); } catch(NumberFormatException e2){ System.out.println(“Hay nhap so!"); } } } Khối FINALLY o Khi ngoại lệ xảy ra, chương trình dừng lại, số cơng việc “dọn dẹp” khơng thực (ví dụ đóng file) o Khối finally đảm bảo câu lệnh ln thực hiện, kể ngoại lệ xảy 18 Khối FINALLY FileInputStream f = null; try { f = new FileInputStream(“d:/somefile.txt"); // đọc file } catch (IOException e) { // hiển thị lỗi } finally { if (f != null) { try { f.close(); // đóng file } catch (Exception e) { // thơng báo lỗi đóng file } }} Phân cấp ngoại lệ Java Object Throwable Error AssertionError Exception RuntimeException NullPointerException IOException ClassNotFoundException ArithmeticException Một số ngoại lệ • Lớp Throwable – Có biến String để lưu thông tin chi tiết ngoại lệ xảy – Một số phương thức • Throwable(String s); // Tạo ngoại lệ có tên s • String getMessage(); // Lấy thơng tin ngoại lệ • void printStackTrace(); // In tất thông tin liên quan đến ngoại lệ 21 Một số ngoại lệ • Lớp Exception – Có nhiều ngoại lệ thuộc lớp Exception – Người dùng tạo ngoại lệ kế thừa từ Exception • Lớp Error – Chỉ lỗi nghiêm trọng khơng dự đốn trước ThreadDead, LinkageError, VirtualMachineError – Các ngoại lệ kiểu Error xử lý 22 Một số ngoại lệ • RuntimeException: Chỉ ngoại lệ xảy JVM thực thi chương trình – NullPointException: trỏ null – OutOfMemoryException: hết nhớ – ArithmeticException: lỗi tốn học, lỗi chia khơng… – ClassCastException: lỗi ép kiểu – ArrayIndexOutOfBoundsException: vượt số mảng – 23 Hai loại ngoại lệ • Ngoại lệ unchecked – Là ngoại lệ không bắt buộc phải kiểm tra – Gồm RuntimeException, Error lớp chúng • Ngoại lệ checked – Là ngoại lệ bắt buộc phải kiểm tra – Gồm ngoại lệ lại 24 Chú ý với ngoại lệ Checked • Giả sử method1 gọi method2 method2 phương thức có khả ném ngoại lệ kiểu checked, lúc đó: – method2 phải nằm khối try/catch – phải khai báo method1 có khả ném (throws) ngoại lệ 25 Ví dụ: • Cách 1: try/catch public static void main(String[] args) { try { String s = buff.readLine(); } catch (IOException e) { } } • Cách 2: Khai báo throws public static void main(String[ ] args) throws IOException { String s = buff.readLine(); } 26 Ngoại lệ người dùng tự định nghĩa • Bước 1: Định nghĩa ngoại lệ (tạo class tên MyException) public class MyException extends Exception { public MyException(String msg) { super(msg); } } Tên lớp ngoại lệ Thừa kế từ lớp Exception Gọi phương thức lớp cha Ngoại lệ người dùng tự định nghĩa • Bước 2: Xây dựng ngoại lệ Khai báo khả tung ngoại lệ // file ExampleException.java public class ExampleException { public void copy(String fileName1, String fileName2) throws MyException { if (fileName1.equals(fileName2)) throw new MyException("File trung ten"); // tung ngoại lệ System.out.println("Copy completed"); } Tung ngoại lệ 28 Ngoại lệ người dùng tự định nghĩa • Bước 3: Sử dụng ngoại lệ public static void main(String[] args) { ExampleException obj = new ExampleException(); try { String a = args[0]; String b = args[1]; obj.copy(a,b); } catch (MyException e) { System.out.println(e.getMessage()); } } } 29 .. .Chương 4.2: Ngoại lệ o o o o o Phân loại lỗi Ngoại lệ Xử lý ngoại lệ Phân cấp ngoại lệ Java Ngoại lệ người dùng định nghĩa Phân loại lỗi Cú pháp Lỗi Luận lý Thực thi Lỗi cú pháp Phát sinh trình. .. ngoại lệ (ném tự động) o Làm chương trình dễ đọc hơn, an tồn Xử lý ngoại lệ try • Chứa đoạn code có khả xảy ngoại lệ catch • Chứa đoạn code xử lý ngoại lệ finally • Ln thực thi Xử lý ngoại lệ. .. loại ngoại lệ • Ngoại lệ unchecked – Là ngoại lệ không bắt buộc phải kiểm tra – Gồm RuntimeException, Error lớp chúng • Ngoại lệ checked – Là ngoại lệ bắt buộc phải kiểm tra – Gồm ngoại lệ lại

Ngày đăng: 10/05/2021, 14:03

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN