KOTLIN · 예외처리
try-catch-finally & 커스텀 예외
Kotlin의 예외 처리. 모든 예외가 unchecked입니다(checked exception 없음).
예외처리입문try-catchfinallyExceptionthrowchecked-exception
핵심 설명
Kotlin의 예외 처리. 모든 예외가 unchecked입니다(checked exception 없음).
Kotlin code
// 커스텀 예외
class ValidationException(
message: String,
val field: String
) : IllegalArgumentException(message)
class NotFoundException(val id: Int)
: RuntimeException("ID $id를 찾을 수 없습니다")
// try는 표현식 — 값을 반환
fun parseInt(s: String): Int? =
try { s.toInt() }
catch (e: NumberFormatException) { null }
fun findUser(id: Int): String {
if (id <= 0) throw ValidationException("ID는 양수", "id")
if (id > 100) throw NotFoundException(id)
return "User#$id"
}
fun main() {
// try-catch-finally
try {
println(findUser(0))
} catch (e: ValidationException) {
println("검증 오류 [${e.field}]: ${e.message}")
} catch (e: NotFoundException) {
println("없음: ${e.message}")
} finally {
println("항상 실행")
}
// try 표현식
val n1 = parseInt("42") // 42
val n2 = parseInt("abc") // null
println("$n1, $n2")
}학습 팁
Kotlin에는 checked exception이 없습니다. @Throws(IOException::class) 어노테이션은 Java 상호운용을 위해 선언만 하는 것이며, Kotlin 내부에서는 강제되지 않습니다.
주의할 점
catch (e: Exception)으로 모든 예외를 잡으면 CancellationException도 잡힙니다. 코루틴에서는 CancellationException을 다시 throw해야 코루틴이 정상 취소됩니다.
자주 묻는 질문
try-catch-finally & 커스텀 예외란 무엇인가요?
Kotlin의 예외 처리. 모든 예외가 unchecked 입니다(checked exception 없음).
try-catch-finally & 커스텀 예외 학습 시 주의할 점은 무엇인가요?
catch (e: Exception) 으로 모든 예외를 잡으면 CancellationException 도 잡힙니다. 코루틴에서는 CancellationException 을 다시 throw해야 코루틴이 정상 취소됩니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.