본문으로 바로가기

try catch finally 구문

  • try-catch문법적으로 완전히 동일
  • try-catch도 하나의 표현식(expression)이다.
  • str.*toInt*() :기본타입 형변환 - 내부적으로는 parseInt 호출
fun parseIntOrThrow(str :String) : Int{
    try{
        return str.toInt()
    }catch(e: NumberFormatException){
        throw IllegalArgumentException("주어진 ${str}는 숫자가 아닙니다.")
    }
}

fun parseIntOrThrow2(str :String) : Int?{   // 하나의 표현식 처럼 처리
    return try{
        str.toInt()
    }catch(e: NumberFormatException){
        null
    }
}

checked Exception / Unchecked Exception

  • Kotlin에서는 Check ExceptionUnchecked Exception을 구분하지 않고 모두 Unchecked Exception 으로 간주
  • Java에서는 메서드 시그니처에 Checked Exception을 명시 해줘야함
    • IOException : checked Exception
    • NullPointException : Unchecked Exception
fun readFile(){   // checked Exception 명시가 없다. 
    val currentFile = File(".")
    val file = File(currentFile.absolutePath + "/a.txt")
    val reader = BufferedReader(FileReader(file))
    println(reader.readLine())
    reader.close()
}

try with resources

  • try with resourcesJDK7에서 추가된 문법으로 try 구문 인자로 괄호 안에 외부 자원을 만들어 주고 Try 가 끝나면 자원을 해제해줌
  • 코틀린에는 try with resources 문법이 없고 use 확장함수로 대체하여 사용할 수 있다.
public inline fun <T : Closeable?, R> T.use(block: (T) -> R): R { }

/* Kotlin */
fun readFile(path: String){
    BufferedReader(FileReader(path)).use { reader ->
        println(reader.readLine())
    }
}

/* Java */
public static void readFile(String path) throws IOException {
      try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
          System.out.println(reader.readLine());
}

Reference

 

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의

이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com