logo

Java의 확인된 예외와 확인되지 않은 예외

자바에서는 예외 프로그램 실행 중에, 즉 런타임에 발생하여 프로그램 명령의 정상적인 흐름을 방해하는 원치 않거나 예상치 못한 이벤트입니다.

Java에는 두 가지 유형의 예외가 있습니다.



  1. 확인된 예외
  2. 확인되지 않은 예외

Java 확인 및 확인되지 않은 예외

Java의 확인된 예외

이것들 컴파일 타임에 확인되는 예외는 다음과 같습니다. 메소드 내의 일부 코드가 확인된 예외를 발생시키는 경우 메소드는 예외를 처리하거나 다음을 사용하여 예외를 지정해야 합니다. 던진다 예어 . 확인된 예외에는 전체 확인된 예외와 부분적으로 확인된 예외의 두 가지 유형이 있습니다. 완전히 확인된 예외는 IOException 및 InterruptedException과 같이 모든 하위 클래스도 확인되는 확인된 예외입니다. 부분적으로 확인된 예외는 예외와 같이 하위 클래스 중 일부가 확인되지 않은 확인된 예외입니다.

예를 들어, C: esta.txt 위치에 있는 파일을 열고 파일의 처음 세 줄을 인쇄하는 다음 Java 프로그램을 생각해 보세요. main() 함수가 FileReader()를 사용하고 FileReader()가 확인된 예외를 발생시키기 때문에 프로그램이 컴파일되지 않습니다. FileNotFoundException . 또한 readLine() 및 close() 메서드를 사용하며 이러한 메서드도 확인된 예외를 발생시킵니다. IO예외



예:

자바






// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException occurred> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Reading file from path in local directory> >FileReader file =>new> FileReader(>'C: esta.txt'>);> >// Creating object as one of ways of taking input> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing file connections> >// using close() method> >fileInput.close();> >}> }>

>

>

산출:

Java Checked 예외의 출력

위 프로그램을 수정하려면 throw를 사용하여 예외 목록을 지정하거나 try-catch 블록을 사용해야 합니다. 우리는 아래 프로그램에서 throws를 사용했습니다. 부터 FileNotFoundException 의 하위 클래스입니다 IO예외 , 우리는 단지 지정할 수 있습니다 IO예외 throws 목록에 위의 프로그램을 컴파일러에 오류가 없도록 만듭니다.

예:

자바


퀵 정렬 알고리즘



// Java Program to Illustrate Checked Exceptions> // Where FileNotFoundException does not occur> // Importing I/O classes> import> java.io.*;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >throws> IOException> >{> >// Creating a file and reading from local repository> >FileReader file =>new> FileReader(>'C: esta.txt'>);> >// Reading content inside a file> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing all file connections> >// using close() method> >// Good practice to avoid any memory leakage> >fileInput.close();> >}> }>

>

>

산출:

First three lines of file 'C:	esta.txt'>

Java의 확인되지 않은 예외

컴파일 타임에 확인되지 않는 예외는 다음과 같습니다. C++에서는 모든 예외가 확인되지 않으므로 컴파일러가 예외를 처리하거나 지정하도록 강제되지 않습니다. 문명화하고 예외를 지정하거나 포착하는 것은 프로그래머의 몫입니다. Java에서는 다음의 예외가 있습니다. 오류 그리고 런타임예외 클래스는 확인되지 않은 예외이고, throwable 아래의 다른 모든 항목은 확인됩니다.

다음 Java 프로그램을 고려하십시오. 잘 컴파일되지만 오류가 발생합니다. 산술 예외 실행할 때. 컴파일러는 다음과 같은 이유로 컴파일을 허용합니다. 산술 예외 확인되지 않은 예외입니다.

예:

자바




// Java Program to Illustrate Un-checked Exceptions> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Here we are dividing by 0> >// which will not be caught at compile time> >// as there is no mistake but caught at runtime> >// because it is mathematically incorrect> >int> x =>0>;> >int> y =>10>;> >int> z = y / x;> >}> }>

>

>

산출

Exception in thread 'main' java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1>

간단히 말해 확인되지 않은 예외는 throws 절에서 포착하거나 선언할 필요가 없는 런타임 예외입니다. 이러한 예외는 일반적으로 배열의 범위를 벗어난 인덱스에 액세스하려고 시도하거나 0으로 나누려고 시도하는 등의 프로그래밍 오류로 인해 발생합니다.

확인되지 않은 예외에는 RuntimeException 클래스의 모든 하위 클래스와 Error 클래스 및 해당 하위 클래스가 포함됩니다.

다음은 Java에서 확인되지 않은 예외의 몇 가지 예입니다.

1. ArrayIndexOutOfBounds예외: 이 예외는 범위를 벗어난 배열 인덱스에 액세스하려고 시도할 때 발생합니다.
2. NullPointer예외: 이 예외는 null 개체 참조에 액세스하려고 시도할 때 발생합니다.
3. 산술 예외: 이 예외는 0으로 나누거나 잘못된 산술 연산을 수행하려고 할 때 발생합니다.