7장 코틀린에서 예외를 다루는 방법
2024. 1. 14. 00:55ㆍkotlin/문법
해당 내용은 인프런 최태현님의 자바 개발자를 위한 코틀린 입문 강의에서 발췌한 내용입니다.
목차
- try catch finally 구문
- Checked Exception과 Unchecked Exception
- try with resources
try catch finally
주어진 문자열을 정수로 변경하는 예제
JAVA
private int parseIntOrThrow(@NotNull String str) {
try {
return Integer.parseInt(str);
} catch (NumberFormatException e) {
throw new IllegalArgumnetException(String.format("주어진 %s는 숫자가 아닙니다.", str));
}
}
Kotlin
fun parseIntOrThrow(str: String): Int {
try {
return str.toInt()
} catch (e: NumberFormatException) {
throw IllegalArgumnetException("주어진 ${str}는 숫자가 아닙니다.");
}
}
- 기본타입간의 형변환은 toType()을 사용!
주어진 문자열을 정수로 변경하는 예제 실패하면 null을 반환!!
JAVA
public Integer pareIntOrNull(String str) {
try {
return Integer.parseInt(str);
} catch (NumberFormatException e) {
return null;
}
}
Kotlin
fun parseIntOrNull(str: String): Int? {
return try {
str.toInt()
} catch (e: NumberFormatException) {
null
}
}
- try catch도 코틀린의 if-else 혹은 if- else if -else 처럼 하나의 Expression으로 간주된다.
Checked Exception과 Unchecked Exception
프로젝트 내 파일의 내용물을 읽어오는 예제
JAVA
public void readFile() throws IOException {
File currentFile = new File(".")
File file = new File(currentFile.getAbsolutePath() + "/a.txt")
BufferedReader reader = new BufferedReader(new FileReader(file))
System.out.println(reader.readLine())
reader.close()
}
Kotlin
fun readFile() {
val currentFile = File(".")
val file = File(currentFile.absolutePath + "/a.txt")
val reader = BufferedReader(FileReader(file))
println(reader.readLine())
reader.close()
}
- throws IOException이 없다!
- Kotlin에서는 Checked Exception과 Unchecked Exception을 구분하지 않는다.
모두 Unchecked Exception이다.
try with resources
JAVA
public void readFile(String path) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(path))) { System.out.println(reader.readeLine()); }
}
Kotlin
fun readFile(path: String) {
BufferedReader(FileReader(path)).use {reader ->
println(reader.readLine())
}
}
- java에 있는 try with resources라는 구문자체가 사라지고 use라는 inline 확장함수를 사용한다.
정리하기
- try catch finally 구문은 문법적으로 완전히 동일하다.
- Kotlin에서는 try catch가 expression이다.
- Kotlin에서 모든 예외는 Unchecked Exception이다.
- Kotlin에서는 try with resources 구문이 없다. 대신 코틀린의 언어적 특징을 활용해close를 호출해준다.
'kotlin > 문법' 카테고리의 다른 글
8장 코틀린에서 함수를 다루는 방법 (2) | 2024.01.14 |
---|---|
5장. 코틀린에서 제어문을 다루는 방법 (0) | 2023.09.07 |
코틀린에서 null을 다루는 방법 (3) | 2023.06.05 |
코틀린에서 변수를 다루는 방법 (0) | 2023.06.05 |