KOTLIN · 예외처리
runCatching 활용
runCatching으로 예외를 Result로 래핑하여 함수형으로 처리합니다. 체이닝과 복구 패턴을 다룹니다.
예외처리중급runCatchingresult-chainrecovermapCatching
핵심 설명
runCatching으로 예외를 Result로 래핑하여 함수형으로 처리합니다. 체이닝과 복구 패턴을 다룹니다.
Kotlin code
data class User(val name: String, val email: String)
fun parseUser(json: String): User {
val parts = json.split(",")
require(parts.size == 2) { "잘못된 형식" }
return User(parts[0].trim(), parts[1].trim())
}
fun validateEmail(user: User): User {
require(user.email.contains("@")) { "유효하지 않은 이메일" }
return user
}
fun main() {
val inputs = listOf("김철수, kim@test.com", "이영희", "박지성, invalid")
inputs.forEach { input ->
val result = runCatching { parseUser(input) }
.mapCatching { validateEmail(it) }
.map { "✓ ${it.name} (${it.email})" }
.recover { "✗ 오류: ${it.message}" }
println(result.getOrNull())
}
// onSuccess/onFailure 패턴
runCatching { parseUser("홍길동, hong@test.com") }
.onSuccess { println("파싱 성공: $it") }
.onFailure { println("파싱 실패: ${it.message}") }
.mapCatching { validateEmail(it) }
.onSuccess { println("검증 성공: $it") }
.onFailure { println("검증 실패: ${it.message}") }
}학습 팁
onSuccess/onFailure는 부수 효과(로깅 등)를 위한 것이며, Result를 변경하지 않고 그대로 반환합니다.
주의할 점
recover 블록에서 다시 예외를 던지면 Result.failure가 됩니다. 복구 로직에서는 안전한 기본값을 반환하세요.
자주 묻는 질문
runCatching 활용란 무엇인가요?
runCatching 으로 예외를 Result 로 래핑하여 함수형으로 처리합니다. 체이닝과 복구 패턴을 다룹니다.
runCatching 활용 학습 시 주의할 점은 무엇인가요?
recover 블록에서 다시 예외를 던지면 Result.failure 가 됩니다. 복구 로직에서는 안전한 기본값을 반환하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.