반응형
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 확장 함수)를 사용한다.
반응형
댓글