추천, 2024

에디터의 선택

Java의 체크 된 예외와 체크되지 않은 예외의 차이점

"Throwable"는 Error 클래스와 Exception 클래스의 부모 클래스입니다. 클래스 "RuntimeException"및 그 서브 클래스, 클래스 "Error"및 그 자손 클래스는 "체크되지 않은 예외"인 반면, "RuntimeException"을 제외한 클래스 "Exception"의 나머지 서브 클래스는 체크 된 예외이다. checked 및 unchecked 예외의 기본적인 차이점은 컴파일러가 확인 된 예외 를 확인하는 반면 컴파일러는 확인 되지 않은 예외를 확인하지 않는다는 것입니다.

비교 차트를 사용하여 체크 된 예외와 확인되지 않은 예외 사이의 다른 차이점에 대해 설명 합니다.

비교 차트

비교의 근거확인 된 예외확인되지 않은 예외
기본컴파일러는 확인 된 예외를 확인합니다.컴파일러는 검사되지 않은 예외를 검사하지 않습니다.
예외 클래스"RuntimeException"클래스를 제외하고 "Exception"클래스의 모든 하위 클래스와 "Error"클래스와 그 하위 클래스는 Checked Exception입니다."RuntimeException"클래스와 해당 하위 클래스는 "확인되지 않은 예외"입니다.
손질검사 된 예외를 처리하지 않으면 컴파일러 객체가 처리됩니다.검사되지 않은 예외를 처리하지 않더라도 컴파일러는 이의를 제기하지 않습니다.
편집프로그램 코드에 처리되지 않은 검사 예외가있는 경우 프로그램이 컴파일되지 않습니다.프로그램 코드에 처리되지 않은 검사되지 않은 예외가 있어도 프로그램이 성공적으로 컴파일됩니다.

확인 예외의 정의

확인 된 예외는 프로그램의 원활한 실행을 위해 컴파일러에서 검사되는 예외입니다. 컴파일러는 프로그램이 확인 된 예외를 처리 할 수 ​​있는지 여부를 확인합니다. 코드가 예외를 처리 할 수 ​​없으면 컴파일 오류가 발생합니다. RuntimeException 클래스를 제외하고 "Exception"클래스의 모든 서브 클래스는 검사 된 예외입니다.
확인 된 예외를 예제로 살펴 보겠습니다.

 import java.io. *; 클래스 예제 {public static void main (String args []) {FileInputStream fis = null; fis = 새로운 FileInputStream ( "B : /myfile.txt"); //이 생성자 인 FileInputStream (File filename)은 검사 된 예외 인 FileNotFoundException을 발생시킵니다. int k; while ((k = fis.read ())! = -1) {// FileInputStream 클래스의 read () 메소드는 확인 된 예외 인 IOException을 던집니다. System.out.print ((char) k); } fis.close (); // close () 메소드는 파일 입력 스트림을 닫아 IOException을 던집니다. }} 

위의 코드에서 우리는 파일 내용을 열고 읽고 표시하려고합니다. 파일이 존재하지 않으면 FileNotFoundException이 발생합니다. 이는 확인 된 예외입니다. 검사 된 예외가 처리되지 않으면 컴파일러에서 프로그램을 부드럽게 컴파일 할 수 없습니다. 컴파일 시간 오류가 표시됩니다. 따라서 컴파일이 원활하게 진행되도록하려면 체크 된 예외를 포착하거나 throw해야한다고 선언해야합니다.

확인되지 않은 예외의 정의

검사되지 않은 예외는 컴파일러에서 검사하지 않는 예외입니다. 예외가 코드에 의해 처리되지 않더라도 컴파일러는 프로그램을 성공적으로 컴파일합니다. "Error"클래스와 그 아이 클래스, "Runtime"클래스 및 그 서브 클래스는 체크되지 않는 예외입니다.

확인되지 않은 예외의 예를 보도록하겠습니다.

 클래스 예제 {public static void main (String args []) {int arr [] = {1, 2, 3, 4, 5}; System.out.println (arr [7]); // ArrayIndexOutOfBoundsException. }} 

위 코드에서 ArrayIndexOutOfBoundsException이 있음을 알 수 있습니다. 존재하지 않는 요소에 액세스하려고 시도하고 있습니다. 이것은 검사되지 않은 예외이므로 컴파일 시간 오류가 발생하지 않으며 오류없이 파일이 컴파일됩니다. 그러나 예외가 처리 될 때까지 프로그램이 실행되지 않습니다. 따라서 원활한 실행을 위해 예외를 포착하거나 throw해야한다고 선언해야합니다.

확인 된 예외와 확인되지 않은 예외의 주요 차이점

  1. 확인 된 예외는 컴파일러에 대한 지식이지만, 검사되지 않은 예외는 컴파일러에 대한 지식이 아닙니다.
  2. RuntimeException 및 Error 클래스를 제외하고 모든 클래스는 예외로 검사됩니다. 반면 RuntimeException 및 Error 클래스는 검사되지 않은 예외입니다.
  3. 확인 된 예외가 코드에 의해 처리되지 않으면 컴파일러 객체가 처리됩니다. 반면에 우리가 코드에서 체크되지 않은 예외를 처리하지 않으면 컴파일러는 반대하지 않습니다.
  4. 코드에서 검사 된 예외가 발생하면 코드는 컴파일되지 않지만 검사되지 않은 예외가 코드에서 처리되지 않더라도 컴파일러는 여전히 코드를 컴파일합니다.

노트 :

런타임 동안 체크되거나 체크되지 않은 예외가 모두 강제적으로 발생합니다. 그것들은 컴파일 시간 동안 컴파일러에 의해서만 체크되거나 체크되지 않는다.

결론:

프로그램을 원활하게 실행하려면 확인 된 예외와 확인되지 않은 예외를 모두 처리해야합니다.

Top