더북(TheBook)

2.10 비검사 예외

자바와 달리 코틀린에는 검사 예외(checked exception)가 없다. 모든 예외는 비검사(unchekced) 예외다. 이런 예외 처리 방식은 최근 대부분의 자바 프로그래머가 개발에 사용하는 검사 예외를 비검사 예외로 감싸는 방식과 궤를 같이한다. 이를 제외하면 코틀린과 자바의 가장 큰 차이는 코틀린에서는 try ... catch .. finally 구조가 값을 돌려주는 식이라는 점이다. 이 식을 다음과 같이 사용할 수 있다.

val num: Int = try {
    args[0].toInt()
} catch (e: Exception) {
    0
} finally {
    // 이 블록 안에 있는 코드는 항상 실행됨
}

이미 if ... else에서 본 것처럼 각 블록이 반환하는 값은 블록의 마지막 줄을 평가한 값이다. if ... else와의 차이는 try .. catch .. finally에서는 중괄호({})가 필수라는 점에 있다. try .. catch .. finally가 반환하는 값은 예외가 발생하지 않으면 try 블록의 마지막 줄을 평가한 값이고, 예외가 발생하면 catch 블록의 마지막 줄을 평가한 값이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.