null 또는 ‘실패를 나타내는 sealed 클래스를 리턴thrownull과 Failure를, 예측하기 어려운 오류는 throw로 처리하는 것이 좋다.null과 Failure는 예상되는 오류를 표현할 때 좋은 방안이다.
sealed result를, 그렇지 않다면 null을 사용하는 것이 일반적이다.null과 Failure을 다루려면 코틀린에선 컴파일 단계에서부터 명시적으로 다뤄야하기 때문이다.inline fun <reified T> String.readObjectOrNull(): T? {
// ...
if (incorrectSign) {
return null
}
// ...
return result
}
inline fun <reified T> String.readObject(): Result<T> {
// ...
if (incorrectSign) {
return Failure(JsonParsingException())
}
// ...
return Success(result)
}
List에선 요소를 추출할 때 일반적으로 아래 두 가지 형태의 함수를 사용한다.
get - 만약 요소가 해당 위치에 없다면 IndexOutOfBoundsException을 발생getOrNull - out of range 오류 대신 null을 리턴getOrNull과 Elvis 연산자를 사용하는 것이 좋다.