더북(TheBook)

자바와 코틀린의 try 문에서 가장 크게 다른 점은 코틀린 try가 식이라는 것이다. 이 식의 값은 (예외가 발생하지 않은 경우) try 블록의 값이거나 예외를 처리한 catch 블록의 값이 된다.

import java.lang.NumberFormatException

fun readInt(default: Int) = try {
  readLine()!!.toInt()
} catch (e: NumberFormatException) {
  default
}

자바 vs. 코틀린 자바와 달리 코틀린에서는 검사 예외(checked exception)와 비검사 예외(unchecked exception)를 구분하지 않는다. 큰 프로젝트에서 발생할 수 있는 예외를 함수에 지정하도록 요구해도 실제로는 생산성이 저하되고 불필요하게 긴 준비 코드를 생성한다는 사실을 (자바를 사용한 경험으로부터) 알았기 때문이다.

try 문의 다른 형태는 finally 블록을 사용한다. finally 블록은 try 블록을 떠나기 전에 프로그램이 어떤 일을 수행하도록 만들어준다.

import java.lang.NumberFormatException

fun readInt(default: Int) = try {
  readLine()!!.toInt()
} finally {
  println("Error")
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.