Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa ngoại lệ được kiểm tra và không được kiểm tra trong Java

Ném có thể ném được là lớp cha mẹ của các lớp Lỗi và ngoại lệ. Lớp Thời gian chạy RuntimeException và các lớp con của nó, lớp Lỗi Lỗi và các lớp con của nó là các trường hợp ngoại lệ không được kiểm soát, trong khi đó, các lớp con còn lại của lớp Ngoại trừ ngoại trừ Sự khác biệt cơ bản giữa ngoại lệ được kiểm tra và không được kiểm tra là các ngoại lệ được kiểm tra được kiểm tra bởi trình biên dịch trong khi đó, trình biên dịch không kiểm tra các ngoại lệ không được kiểm tra .

Hãy để chúng tôi thảo luận về sự khác biệt khác giữa các trường hợp ngoại lệ được kiểm tra và không được kiểm tra với sự giúp đỡ của biểu đồ so sánh.

Biểu đồ so sánh

Cơ sở để so sánhĐã kiểm tra ngoại lệNgoại lệ không được kiểm tra
Căn bảnTrình biên dịch kiểm tra ngoại lệ được kiểm tra.Trình biên dịch không kiểm tra ngoại lệ Unchecked.
Lớp ngoại lệNgoại trừ lớp "RuntimeException", tất cả các lớp con của lớp "Ngoại lệ" và lớp "Lỗi" và các lớp con của nó đều được kiểm tra Ngoại lệ.Lớp "RuntimeException" và các lớp con của nó, là "Ngoại lệ không được kiểm tra".
Xử lýNếu chúng ta không xử lý ngoại lệ được kiểm tra, thì các đối tượng trình biên dịch.Ngay cả khi chúng tôi không xử lý ngoại lệ không được kiểm tra, trình biên dịch không phản đối.
Biên soạnChương trình không biên dịch nếu có một ngoại lệ được kiểm tra chưa xử lý trong mã chương trình.Chương trình biên dịch thành công ngay cả khi có một ngoại lệ chưa được kiểm tra trong mã chương trình.

Định nghĩa về ngoại lệ được kiểm tra

Các ngoại lệ được kiểm tra là những ngoại lệ được trình biên dịch kiểm tra để thực hiện trơn tru chương trình. Trình biên dịch kiểm tra xem chương trình có thể xử lý ngoại lệ được kiểm tra hay không. Nếu mã không thể xử lý ngoại lệ, sẽ xảy ra lỗi biên dịch. Tất cả các lớp con của lớp Exception Ex, ngoại trừ lớp RuntimeException là các ngoại lệ được kiểm tra.
Hãy để chúng tôi nghiên cứu ngoại lệ được kiểm tra với một ví dụ.

 nhập java.io. *; lớp Ví dụ {public static void main (String args []) {FileInputStream fis = null; fis = new FileInputStream ("B: /myfile.txt"); // Hàm tạo này FileInputStream (Tên tệp tệp) ném FileNotFoundException, đây là một ngoại lệ được kiểm tra. int k; while ((k = fis.read ())! = -1) {// Phương thức read () của lớp FileInputStream cũng đưa ra một ngoại lệ được kiểm tra: IOException. System.out.print ((char) k); } fis.c Đóng (); // Phương thức close () đóng luồng đầu vào tệp mà nó ném IOException. }} 

Trong đoạn mã trên, chúng tôi đang cố gắng mở, đọc và hiển thị nội dung tệp. Có thể xảy ra rằng tệp không có mặt, sau đó FileNotFoundException sẽ xảy ra là một ngoại lệ được kiểm tra. Nếu ngoại lệ được kiểm tra không được xử lý, thì trình biên dịch sẽ không cho phép chương trình được biên dịch trơn tru. Nó sẽ hiển thị lỗi thời gian biên dịch. Vì vậy, để biên dịch trơn tru, ngoại lệ được kiểm tra phải được bắt hoặc khai báo để ném.

Định nghĩa về ngoại lệ không được kiểm tra

Các ngoại lệ không được kiểm tra là những ngoại lệ không được kiểm tra bởi trình biên dịch. Trình biên dịch biên dịch chương trình thành công ngay cả khi các ngoại lệ không được xử lý bởi mã. Lớp Lỗi Lỗi và các lớp con của nó, lớp Thời gian chạy trực tuyến và các lớp con của nó là các ngoại lệ không được kiểm tra.

Hãy cho chúng tôi xem một ví dụ về một ngoại lệ không được kiểm soát.

 lớp Ví dụ {public static void main (String args []) {int Array [] = {1, 2, 3, 4, 5}; System.out.println (mảng [7]); // ArrayIndexOutOfBoundException. }} 

Trong đoạn mã trên, bạn có thể thấy rằng có một ArrayIndexOutOfBoundException, khi tôi đang cố gắng truy cập vào phần tử không tồn tại. Vì đây là một ngoại lệ không được kiểm tra, lỗi thời gian biên dịch sẽ không xảy ra và tệp sẽ được biên dịch mà không có bất kỳ lỗi nào. Nhưng chương trình sẽ không thực thi cho đến khi ngoại lệ được xử lý. Vì vậy, để thực hiện trơn tru, các ngoại lệ phải được bắt hoặc khai báo để ném

Sự khác biệt chính giữa ngoại lệ được kiểm tra và không được kiểm tra

  1. Các ngoại lệ được kiểm tra là kiến ​​thức về trình biên dịch trong khi các ngoại lệ không được kiểm tra không có trong kiến ​​thức về trình biên dịch.
  2. Ngoại trừ lớp RuntimeException và Error, tất cả các lớp đều được kiểm tra ngoại lệ. Mặt khác, các lớp RuntimeException và Error là các ngoại lệ không được kiểm tra.
  3. Nếu các ngoại lệ được kiểm tra không được xử lý bởi mã thì các đối tượng trình biên dịch. Mặt khác, nếu chúng ta không xử lý các ngoại lệ không được kiểm tra trong mã thì trình biên dịch không phản đối.
  4. Nếu ngoại lệ được kiểm tra xảy ra trong mã, mã sẽ không biên dịch trong khi đó, ngay cả khi các ngoại lệ không được kiểm tra không được xử lý bởi mã, trình biên dịch vẫn biên dịch mã.

Chú thích :

Cả hai ngoại lệ được kiểm tra hoặc không được kiểm tra bắt buộc xảy ra trong thời gian chạy. Chúng chỉ được kiểm tra hoặc bỏ chọn bởi trình biên dịch trong thời gian biên dịch.

Phần kết luận:

Cả hai trường hợp ngoại lệ được kiểm tra và không được kiểm tra phải được xử lý để thực hiện chương trình một cách trơn tru.

Top