null
또는 ‘실패를 나타내는 sealed
클래스를 리턴throw
null
과 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 연산자를 사용하는 것이 좋다.