더북(TheBook)

3.5.1 예외 던지기

오류 조건을 신호로 보내려면 자바와 마찬가지로 throw 식에 예외 객체를 사용해야 한다. 문자열이 잘못된 경우 어떤 폴백(fallback) 값을 돌려주는 대신 오류를 발생시키도록 앞에서 본 parseIntNumber() 함수를 고쳐보자.

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
}

자바 vs. 코틀린 자바와 달리 코틀린에서는 클래스 인스턴스를 생성(여기서는 예외)할 때 new 같은 특별한 구문을 사용하지 않는다. 코틀린에서는 NumberFormatException("Not a number: $s")처럼 생성자 호출도 일반 함수 호출과 똑같이 생겼다.

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