자바와 코틀린의 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") }