[Effective Java] 필요 없는 검사 예외 사용은 피하라

들어가며

checked exception을 잘 사용하면 API와 프로그램의 질을 높일 수 있다. 하지만 과하게 사용한다면 이는 독이된다. 더구나 checked exception을 던지는 메소드는 스트림에서 사용할 수 없다. API를 제대로 사용해도 발생할 수 있는 예외이거나 프로그래머가 의미있는 조취를 취할 수 있는 경우를 제외하면 비검사 예외가 좋다.

검사 예외 회피

검사 예외를 회피하는 가장 쉬운 방법은 옵셔널을 반환하는 것이다. 이 방식의 단점은 예외가 발생한 이유를 알려주는 부가 정보를 담을 수 없다는 점이다.

다른 방법으로 검사 예외를 던지는 메소드를 2개로 쪼개 비검사 예외로 바꿀 수 있다. 다음 코드를 보자.

1
2
3
4
5
try {
obj.action(args);
} catch (TheCheckedException e) {
...
}
1
2
3
4
5
if (obj.actionPermitted(args)) {
obj.action(arg);
} else {
...
}

이 방법을 모든 상황에 적용할 수는 없지만 그래도 적용할 수 있다면 쓰기 편한 API를 제공할 수 있다. 리펙토링 이후의 코드가 깔끔하지는 않지만 더 유연한 것은 확실하다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/22/Languages/Effective%20JAVA/item71/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.