검사 예외를 제대로 활용하면 API와 프로그램 질을 높일 수 있습니다. 결과를 코드로 반환하거나 비검사 예외를 던지는 것과 달리, 검사 예외는 발생한 문제를 프로그래머가 처리하여 안정성을 높이게끔 해줍니다.
하지만 검사 예외를 과도하게 사용하면 오히려 불편한 API가 됩니다. 메서드가 검사 예외를 던질 수 있다고 선언됐다면, 이를 호출하는 코드에서는 catch 블록을 두어 그 예외를 붙잡아 처리하거나 더 바깥으로 던져 문제를 전파해야만 합니다.
더구나 검사 예외를 던지는 메서드는 스트림 안에서 직접 사용할 수 없기 때문에 자바 8부터는 부담이 더욱 커집니다. 따라서 API를 제대로 사용해도 발생할 수 있는 예외이거나, 프로그래머가 의미있는 조치를 취할 수 있는 경우라면 이 정도 부담쯤은 받아들일 수 있을 것입니다.
그러나 둘 중 어디에도 해당하지 않는다면 비검사 예외를 사용하는게 좋습니다.
또 하나의 선택지로는 적절한 결과 타입을 담은 옵셔널을 반환하는 것입니다. 검사 예외를 던지는 대신 단순히 빈 옵셔널을 반환하면 됩니다. 하지만 이 방식의 단점이라면 예외가 발생한 이유를 알려주는 부가 정보를 담을 수 없는 것입니다.
참조한 곳: https://pridiot.tistory.com/54, https://reference-m1.tistory.com/246
스위프트의 경우에 자바의 검사 예외에 해당하는 것은 Error(enum type)입니다. Error도 자바의 검사 예외와 마찬가지로 발생한 문제를 프로그래머가 처리하여 안정성을 높이게끔 해줍니다.
따라서 사용자가 처리할 수 있는 상황이면 Error를 사용하면 되는데, 자바와 마찬가지로 Error를 과도하게 사용하면 오히려 불편한 API를 될 수 있겠습니다.