checked예외, unchecked예외

정순동·2023년 12월 10일
0

자바기초

목록 보기
41/89

checked, unchecked예외

	class ExceptionTest {
    	public static void main(String [] args) {
        	throw new Exception();	// Exception을 고의로 발생
        }
    }

위 코드를 컴파일 하면 아래와 같은 에러가 발생한다.

	ExceptionTest.java:3: unreported exception java.lang.Exception; must be caught or declared to be thrown
			throw new Exception
    ^
    1 error

앞서 분류한 'Exception클래스와 그 자손들(checked예외)'이 발생할 가능성이 있는 문장들에 대해 예외처리를 해주지 않으면 컴파일조차 되지 않는다.

	class RuntimeExceptionTest {
    	public static void main(String [] args) {
        	throw new RuntimeException();	//RuntimeException을 고의로 발생
        }
    }

하지만 위 코드는 컴파일을 성공적으로 끝낸다. 물론 이 코드도 컴파일 후 실행과 동시에 런타임 오류를 발생시켜 비정상적으로 프로그램이 종료되긴하나, 둘다 고의로 발생시켰고 둘다 try-catch로 확인하지 않았는데 왜 다를까?
'RuntimeException클래스'와 그 자손(unchecked예외)에 해당하는 예외는 프로그래머가 실수로 발생하는 것들이기 때문에 예외처리를 강제하지 않는 것이다. 만일 RuntimeException클래스들에 속하는 예외가 발생할 가능성이 있는 코드에도 예외처리를 해야 한다면, 모든 참조 변수와 배열이 사용되는 곳을 try-catch로 예외처리 해 주어야 할것이다.

0개의 댓글