require, check, assert 함수를 사용하면, 대부분의 코틀린 오류를 처리
ex) JSON 형식을 파싱하는 라이브러리 구현,
기본적으로 입력된 JSON 파일의 형식에 문제가 있다면, JSONParsingException 등을 발생시키는 것이 좋음
inline fun <reified T> String.readObject(): T { //... if (incorrectSing) { throw JsonParsingException() } //... return result }
🛠️ 예시 코드에 대해 - inline, reified
표준 라이브러리에는 이를 나타내는 적절한 오류가 없으므로,
사용자 정의 오류를 사용했지만 가능한 표준 라이브러리를 사용
IllegalArgumentException과 IllegalStateException :
require와 check를 사용해 throw 할 수 있는 예외
IndexOutofBoundsException :
인덱스 파라미터의 값이 범위를 벗어났다는 것을 나타냄
일반적으로 컬렉션/배열과 함께 사용
ConcurrentModificationException :
동시 수정을 금지했는데, 발생해 버렸다는 것을 나타냄
UnsupportedOperationException :
사용자가 사용하려고 했던 메서드가 현재 객체에서는 사용할 수 없다는 것을 나타냄. 기본적으로는 사용할 수 없는 메서드는 클래스에 없는 것이 좋음
이렇게 구현해 버리면 인터페이스 분리 원칙을 위반
인터페이스 분리 원칙은 클라이언트가 자신이 사용하지 않는 메서드에 의존하면 안된다는 원칙