JAVA

예외처리 - Unchecked Exception(런타임 익셉션)

고민말고생각하는사람 2024. 6. 2. 18:26

RuntimeException 을 상속받는 모든 sub 예외들은 Unchecked Exception이라 했다.

코드 작성 시 컴파일러가 예외를 체크하지 않는다.

Unchecked 와 Checked 예외라는 점에서 동일하다. 그러나 Unchecked 는 throws 생략이 가능하다. thorws 를 생략해도 예외 발생 시 상위(메서드를 호출한 쪽)으로 예외를 던진다.

public class UncheckedException extends RuntimeException{
	public UncheckedException(){
    ...;
    }
}

 

public void call(){
	throw new 런타임 예외 or 상속 받은 예외(); 
}

예외를 발생키셨으면, 처리하거나, 던져야 하는데, 해당 코드는 처리도, 던지는 작업도 하지 않는 것 처럼 보인다.

허나, Unchecked Exception 은 처리 코드 혹은 throws 키워드를 생략해도 상위 쪽으로 던진다.

 

예외처리가 필요한 경우 try ~catch 문으로 처리하자.

try {
    client.call();
} catch (MyUncheckedException e) {
    System.out.println("예외처리 메세지 : " + e.getMessage());
}
System.out.println("정상 로직");

 

장점

throws 예외 처리를 생략할 수 있다.

단점

컴파일러가 예외 체크를 따로 해주지 않기 때문에, 휴먼 에러로 예외 처리가 누락될 수 있다.