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

Jung Ho Seo·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개의 댓글

관련 채용 정보