KOTLIN · 예외처리
Result 타입 활용
Kotlin 표준 Result 타입으로 성공/실패를 명시적으로 표현합니다. 예외 대신 반환값으로 에러를 전달합니다.
예외처리중급resultrunCatchingfolderror-handling
핵심 설명
Kotlin 표준 Result 타입으로 성공/실패를 명시적으로 표현합니다. 예외 대신 반환값으로 에러를 전달합니다.
Kotlin code
fun parseNumber(input: String): Result<Int> =
runCatching { input.trim().toInt() }
fun divide(a: Int, b: Int): Result<Double> =
if (b == 0) Result.failure(ArithmeticException("0으로 나눌 수 없음"))
else Result.success(a.toDouble() / b)
fun main() {
// 기본 사용
val result = parseNumber("42")
println(result.getOrDefault(0)) // 42
// 체이닝
val chained = parseNumber("10")
.mapCatching { divide(100, it).getOrThrow() }
.map { "결과: %.2f".format(it) }
println(chained.getOrElse { "오류: ${it.message}" })
// fold 패턴
parseNumber("abc").fold(
onSuccess = { println("성공: $it") },
onFailure = { println("실패: ${it.message}") }
)
// recover: 실패 복구
val recovered = parseNumber("xyz")
.recover { 0 }
println("복구: ${recovered.getOrNull()}")
}학습 팁
mapCatching은 변환 중 예외를 자동으로 Result.failure로 감싸줍니다. 안전한 체이닝에 유용합니다.
주의할 점
getOrThrow()를 무분별하게 사용하면 Result의 안전성 이점이 사라집니다. fold나 getOrElse를 선호하세요.
자주 묻는 질문
Result 타입 활용란 무엇인가요?
Kotlin 표준 Result 타입으로 성공/실패를 명시적으로 표현합니다. 예외 대신 반환값으로 에러를 전달합니다.
Result 타입 활용 학습 시 주의할 점은 무엇인가요?
getOrThrow() 를 무분별하게 사용하면 Result 의 안전성 이점이 사라집니다. fold 나 getOrElse 를 선호하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.