[이펙티브 코틀린] 1장 안정성 Item 6 사용자 정의 오류보다는 표준 오류를 사용하라

Sdoubleu·2023년 1월 6일
0

이펙코

목록 보기
6/7
post-thumbnail

require, check, assert 함수를 사용하면, 대부분의 코틀린 오류를 처리

오류처리 함수에 대한 내용

ex) JSON 형식을 파싱하는 라이브러리 구현,
기본적으로 입력된 JSON 파일의 형식에 문제가 있다면, JSONParsingException 등을 발생시키는 것이 좋음

inline fun <reified T> String.readObject(): T {
	//...
    if (incorrectSing) {
    	throw JsonParsingException()
	}
    //...
    return result
}

🛠️ 예시 코드에 대해 - inline, reified

표준 라이브러리에는 이를 나타내는 적절한 오류가 없으므로,
사용자 정의 오류를 사용했지만 가능한 표준 라이브러리를 사용


일반적으로 사용되는 예외 몇 가지

  • IllegalArgumentExceptionIllegalStateException :
    require와 check를 사용해 throw 할 수 있는 예외

  • IndexOutofBoundsException :
    인덱스 파라미터의 값이 범위를 벗어났다는 것을 나타냄
    일반적으로 컬렉션/배열과 함께 사용

  • ConcurrentModificationException :
    동시 수정을 금지했는데, 발생해 버렸다는 것을 나타냄

  • UnsupportedOperationException :
    사용자가 사용하려고 했던 메서드가 현재 객체에서는 사용할 수 없다는 것을 나타냄. 기본적으로는 사용할 수 없는 메서드는 클래스에 없는 것이 좋음

이렇게 구현해 버리면 인터페이스 분리 원칙을 위반
인터페이스 분리 원칙은 클라이언트가 자신이 사용하지 않는 메서드에 의존하면 안된다는 원칙

  • NoSuchElementException :
    사용자가 사용하려고 했던 요소가 존재하지 않음을 나타냄
    예를들어 내부에 요소가 없는 Iterable에 대해 next를 호출할 때 발생
profile
개발자희망자

0개의 댓글