가있는 java 의 체크 및 체크되지 않은 예외에는 체크 된 예외와 체크되지 않은 예외의 두 가지 유형이 있습니다. 이 안내서에서 우리는 그것들을 논의 할 것입니다. 주요한 차이를 확인하고 예외가되지 않은 것은 확인된 예외 사항은 체크에서 컴파일시 동안 선택하지 않는 예외에서 확인합니다.
검사 된 예외는 무엇입니까?
검사 된 예외는 컴파일 타임에 검사됩니다., 그것이 의미하는 경우에는 방법이 확인 예외한 다음을 처리하는 예외를 사용하여도-을 잡을 차단하거나 그 선언은 예외를 사용하여 발생 키워드로,그렇지 않으면 프로그램을 줄 것이 컴파일에 오류가 있습니다.
이해 할 수 있습의 도움으로 예:
확인 예외를 들어
이 예에서 우리는 파일을 읽는myfile.txt
고 표시하는 해당 콘텐츠습니다. 이 프로그램에는 아래 주석에서 언급했듯이 체크 된 예외가 던져지는 세 곳이 있습니다., 파일 경로 및 이름을 지정하는 데 사용되는 FileInputStream 은FileNotFoundException
를 던집니다. Read()메소드는 파일을 읽고 내용을 던졌IOException
와 close()메소드는 파일을 닫 입력 스트림 또한 발생IOException
.
출력:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: Unhandled exception type FileNotFoundExceptionUnhandled exception type IOExceptionUnhandled exception type IOException
왜 이 컴파일에 오류가? 내가 처음에 언급했듯이 체크 된 예외는 컴파일 시간 동안 확인됩니다. 예외를 처리/선언하지 않았기 때문에 우리 프로그램은 컴파일 오류를 주었다.
오류를 해결하는 방법?, 이 오류를 방지하는 두 가지 방법이 있습니다. 우리는 두 가지 방법을 하나씩 보게 될 것입니다.
방법 1:throws 키워드를 사용하여 예외를 선언하십시오.
으로 우리가 알고 있는 세 가지 모두 사건의 확인 예외는 main()메서드를 방지하는 방법 중 하나 컴파일에 오류가:선언을 제외에서 방법을 사용하여 발생 키워드를 사용합니다. 당신은 우리의 코드가 FileNotFoundException 과 IOException 을 던지고 있다고 생각할 수 있습니다. 그 이유는 IOException 이 FileNotFoundException 의 부모 클래스이므로 기본적으로 다룹니다., 원하는 경우 다음과 같이 선언 할 수 있습니다.public static void main(String args) throws IOException, FileNotFoundException
.
출력:
파일 내용이 화면에 표시됩니다.
방법 2:try-catch 블록을 사용하여 처리하십시오.
우리가 위에서 사용한 접근 방식은 전혀 좋지 않습니다. 그것은 최고의 예외 처리 연습이 아닙니다. 누군가가 오류를 쉽게 이해할 수 있도록 각 예외 유형에 대해 의미있는 메시지를 제공해야합니다. 코드는 다음과 같아야합니다.
이 코드는 잘 실행되고 파일 내용을 표시합니다.,
여기에 몇 가지 다른 예외를 체크–
SQLException
IOException
ClassNotFoundException
InvocationTargetException
어떤 예외가되지 않은?
검사되지 않은 예외는 컴파일 타임에 검사되지 않습니다. 그것이 의미하는 경우 프로그램을 던지고 있는 검사되지 않는 예외 경우에도 당신을 처리하지 않/선언하는 예외로,이 프로그램을 포기하지 않 컴파일에 오류가 있습니다. 대부분의 경우 이러한 예외는 사용자-프로그램 상호 작용 중에 사용자가 제공 한 불량 데이터로 인해 발생합니다., 그러한 예외를 유발하고 적절하게 처리 할 수있는 조건을 미리 판단하는 것은 프로그래머의 몫입니다. 검사되지 않은 모든 예외는 RuntimeException 클래스의 직접 하위 클래스입니다.
이해 할 수 있습으로 예:
선택되지 않는 예외를 들어
컴파일하는 경우 이 코드는 것이 성공적으로 컴파일 할 때 그러나 당신이 그것을 실행,그것은 던져ArithmeticException
. 즉,검사되지 않은 예외는 컴파일 타임에 검사되지 않고 런타임에 발생한다는 것을 분명히 보여줍니다. 다른 예를 보자.,
이 코드는ArrayIndexOutOfBoundsException
도 검사되지 않은 예외이므로 성공적으로 컴파일됩니다.
참고:컴파일러가 이러한 예외를 확인하지 않아서 처리하지 않아야한다는 의미는 아닙니다. 사실 우리는 그들을 더 조심스럽게 다루어야합니다. 예를 들어 위의 예제에서 있어야 예외 메시지가 표시 사용자는 노력 값을 표시하는 존재하지 않에 배열되도록 사용자가 될 수 있 문제를 해결합니다.,
Output:
The specified index does not exist in array. Please correct the error.
Here are the few unchecked exception classes:
NullPointerException
ArrayIndexOutOfBoundsException
ArithmeticException
IllegalArgumentException
NumberFormatException