[Kotlin] 5. 예외처리

2023. 3. 23. 23:57Programming Languages/Kotlin

Kotlin은 체크(컴파일) 예외와 언체크(런타임) 예외를 구분하지 않는다. Java는 체크 예외를 처리하도록 강제한다. 하지만 대부분의 프로그래머들은 체크 예외를 작성만 할뿐 의미없이 던지는 경우가 많다. 따라서 Kotlin에서는 이를 구분하지 않도록 했다. 예외를 던지면 예외를 잡을 때까지 호출된 함수를 거슬러 올라가며 예외를 다시 던진다.

1. try, catch, finally

fun readNumber(br: BufferedReader): Int? {
    try {
        val line = br.readLine()
        return Integer.parseInt(line)
    } catch (e: NumberFormatException) {
        throw NumberFormatException("Invalid number")
    } finally {
        br.close()
    }
}

2. try를 식으로 사용

try도 if 나 when 과 같은 식이다. if 와의 차이점은 중괄호를 꼭 써야 한다는 점이다.

fun readNumber(br: BufferedReader) {
    val number = try {
        Integer.parseInt(br.readLine())
    } catch (e: NumberFormatException) {
        return
    }
    println(number)
}