KOTLIN · 함수형
함수형 에러 처리
Kotlin의 Result 타입과 runCatching을 활용한 함수형 에러 처리 전략입니다.
함수형고급resultrunCatchingfunctional-errorrecover
핵심 설명
Kotlin의 Result 타입과 runCatching을 활용한 함수형 에러 처리 전략입니다.
Kotlin code
fun fetchData(url: String): Result<String> = runCatching {
if (url.isEmpty()) throw IllegalArgumentException("빈 URL")
if (!url.startsWith("http")) throw IllegalArgumentException("잘못된 프로토콜")
"데이터: $url 응답"
}
fun parseJson(data: String): Result<Map<String, Any>> = runCatching {
mapOf("content" to data, "status" to "ok")
}
fun main() {
// Result 체이닝
val result = fetchData("https://api.example.com")
.mapCatching { parseJson(it).getOrThrow() }
.map { it["content"] }
.getOrElse { "기본값" }
println(result)
// recover 패턴
val recovered = fetchData("")
.recover { ex ->
println("복구: ${ex.message}")
"빈 응답"
}
println(recovered.getOrNull())
// fold로 처리
fetchData("ftp://wrong").fold(
onSuccess = { println("성공: $it") },
onFailure = { println("실패: ${it.message}") }
)
}학습 팁
mapCatching은 변환 중 발생하는 예외도 Result.failure로 감싸줍니다. map은 예외가 전파됩니다.
주의할 점
Result를 함수 반환 타입으로 직접 사용하는 것은 현재 제한됩니다. 래퍼 클래스를 사용하거나 runCatching 호출부에서 처리하세요.
자주 묻는 질문
함수형 에러 처리란 무엇인가요?
Kotlin의 Result 타입과 runCatching 을 활용한 함수형 에러 처리 전략입니다.
함수형 에러 처리 학습 시 주의할 점은 무엇인가요?
Result 를 함수 반환 타입으로 직접 사용하는 것은 현재 제한됩니다. 래퍼 클래스를 사용하거나 runCatching 호출부에서 처리하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.