Effective Java 71. 필요 없는 검사 예외 사용은 피하라

eversong·2020년 9월 1일
0

EffectiveJava

목록 보기
27/35
post-thumbnail

Checked Exception

검사 예외는 제대로 활용하면 api와 프로그램의 질을 높일 수 있다. 검사 예외는 발생한 문제를 프로그래머가 처리하여 안정성을 높이게끔 해준다. 물론 검사 예외를 사용하면, 오히려 쓰기 어려운 api가 된다. 어떤 메서드가 검사 예외를 던질 수 있다고 선언됐다면, 이를 호출하는 코드쪽에서 반드시 그 예외를 처리해 주어야 한다. 이를 붙잡아(catch) 처리하거나 혹은 더 바깥으로 던져 문제를 전파해야된다.

검사 예외를 회피하기

검사 예외를 회피하는 가장 쉬운 방법은 적절한 결과 타입을 담은 옵셔널을 반환하는 것이다. 검사 예외를 던지는 대신에 단순히 빈 옵셔널을 반환하면 된다. 이 방식의 단점은 예외가 발생한 이유를 알려주기 어렵다는 것이다.

혹은 두개의 메서드로 쪼개는 방법 이있다

검사 예외를 두개의 메서드로 쪼개기


// 리펙토링 전 메서드
try {
	obj.action(args);
} catch (TheCheckedExcpetion e) {
	// ...
}


// 리펙토링 후 메서드
if(obj.actionPermitted(args)) {
	obj.action(args);
} else {
	// ...
}

이렇게 예외 케이스인지 검사하는 메서드를 추가하고 예외 케이스인경우에는 런타임 익셉션(Unchecked exception)으로 해결하는 방법도 있다.

이 방식을 모든 코드에 적용할 수는 없지만, 훨씬 유연한 구조임은 사실이다.

정리

꼭 필요한 곳에만 사용한다면 검사 예외는 프로그램의 안정성을 높여준다, 하지만 남용한다면 쓰기 고통스러운 API를 낳는다. API의 호출자가 예외 상황에서 복구할 방법이 없다면 비검사 예외를 던지자.

profile
책, 글, 개발

0개의 댓글