코틀린의 예외 처리는 자바와 접근방법이 아주 비슷하다. 함수는 정상 종료, 즉 어떤 값을 반환하거나 비정상적으로 오류가 발생한 경우 예외를 던질 수 있다. 예외가 발생한 경우에는 함수를 호출한 쪽에서 예외를 잡아내거나 (catch) 잡아내지 않는 경우 함수 호출 스택의 위로 예외가 전달 될 수 있다.
오류 조건을 신호로 보내려면 자바와 마찬가지로 throw 식에 예외 객체를 사용해야 한다. 문자열이 잘못된 경우 어떤 폴백(fallback) 값을 돌려주는 대신 오류를 발생시키도록 바꿔야한다.
fun parseIntNumber(s: String): Int{
var num = 0
if(s.length !in 1..31) throw NumberFormatException("Not a number: $s")
for(c in s) {
if(c !in '0'..'1') throw NumberFormatException("Not a number: $s")
num = num*2 + (c - '0')
}
return num
}
→ 코틀린의 예외 처리 단계는 기본적으로 자바와 같다.
fun sayHello(name: String){
val message =
if(name.isNotEmpty()) "Hello $name"
else throw IllegalArgumentException("Empty name")
println(message)
}
import java.lang.NumberFormatException
fun readInt(default: Int): Int {
try{
return redLine()!!.toInt()
} catch (e: NumberFormatException){
return defualt
}
}