본문 바로가기
Kotlin

예외 처리

by oncerun 2022. 12. 4.
반응형

 

try catch finally 구문

 

큰 문법 차이는 없으나 catch 구문에서 에러의 타입을 정의하는 부분과 코틀린에서 객체를 생성하는 문법을 기억하고 있으면 된다. 

 

문자를 숫자로 변환하는 try-catch-finally 구문을 확인해보자.

 

fun parseIntOrThrow(str: String): Int {

    try {
        return str.toInt()
    } catch (e: NumberFormatException) {
        throw IllegalArgumentException("$str is not number")
    }

}

null 반환문도 가능하다.


fun parseIntOrNull(str: String): Int? {
    return try {
        str.toInt()
    } catch (e: NumberFormatException) {
        null
    }

}

 

try-catch문도 Expression으로 간주되는 게 적응이 조금 힘들다.

 

Checked Exception과 Unchecked Exception

 

자바 코드에서 파일 입출력을 하는 코드를 보자.

public void readFile2(String path) throws IOException {

  BufferedReader br = new BufferedReader(new FileReader(path));
  String str = "";
  while ((str = br.readLine()) != null) {
    System.out.println(str);
  }

  br.close();
}

 

파일을 사용하는 부분에 있어 반드시 CheckedException을 처리해주어야 한다.

이와 비슷한 코틀린 코드를 보자.

 

fun readFile(filePath: String) {
    val br = BufferedReader(FileReader(filePath))
    println(br.readLine())
    br.close()
}

 

코틀린 코드는 Chekced Exception과 Unchecked Exception을 구분하지 않고 모두 Unchecked Exception으로 처리한다!

 

 

try with resources

 

자바 코드

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

 

코틀린 코드

fun readFile(filePath: String) {
    BufferedReader(FileReader(filePath)).use { reader ->
        println(reader)
    }
}

 

코틀린에서는 try-with-resources가 사라지고 use(inline 확장 함수)를 사용한다. 

반응형

'Kotlin' 카테고리의 다른 글

클래스  (0) 2022.12.05
함수 문법  (0) 2022.12.04
반복문  (0) 2022.12.04
조건문  (0) 2022.11.30
연산자  (0) 2022.11.27

댓글