3.5.2 try 문으로 예외 처리하기
코틀린에서 예외를 처리할 때는 기본적으로 자바와 똑같은 문법의 try 문을 사용한다. 입력으로 받은 문자열을 수로 파싱할 수 없는 경우에는 어떤 디폴트 값을 반환하는 다음 함수를 생각해보자.
import java.lang.NumberFormatException fun readInt(default: Int): Int { try { return readLine()!!.toInt() } catch (e: NumberFormatException) { return default } }
예외가 발생할 수 있는 코드(여기서는 toInt() 호출)를 try 블록으로 감싼다. 방금 본 첫 번째 형태의 try 문에는 최소한 하나 이상 적절한 타입의 예외(여기서는 NumberFormatException)를 잡아내는 catch 블록이 있어야 한다. 처리할 예외는 예외 파라미터로 표현되며, catch 블록의 내부에서는 이 파라미터를 마음대로 쓸 수 있다. try 블록 내부의 코드가 예외를 던지면, 코드 실행이 중단되고 프로그램은 예외를 처리할 수 있는 첫 번째 catch 블록으로 제어를 이동한다. 만약 예외와 일치하는 catch 블록이 없으면 예외가 전파된다.
자바 vs. 코틀린 자바 7부터는 catch (FooException | BarException e) {} 같은 구문을 사용해 한 캐치 블록 안에서 여러 예외를 처리할 수 있다. 코틀린에서는 이런 핸들러를 아직 지원하지 않는다.