들어가며
checked exception을 잘 사용하면 API와 프로그램의 질을 높일 수 있다. 하지만 과하게 사용한다면 이는 독이된다. 더구나 checked exception을 던지는 메소드는 스트림에서 사용할 수 없다. API를 제대로 사용해도 발생할 수 있는 예외이거나 프로그래머가 의미있는 조취를 취할 수 있는 경우를 제외하면 비검사 예외가 좋다.
검사 예외 회피
검사 예외를 회피하는 가장 쉬운 방법은 옵셔널을 반환하는 것이다. 이 방식의 단점은 예외가 발생한 이유를 알려주는 부가 정보를 담을 수 없다는 점이다.
다른 방법으로 검사 예외를 던지는 메소드를 2개로 쪼개 비검사 예외로 바꿀 수 있다. 다음 코드를 보자.
1 | try { |
1 | if (obj.actionPermitted(args)) { |
이 방법을 모든 상황에 적용할 수는 없지만 그래도 적용할 수 있다면 쓰기 편한 API를 제공할 수 있다. 리펙토링 이후의 코드가 깔끔하지는 않지만 더 유연한 것은 확실하다.