1. try - catch
코틀린에서도 자바와 동일하게 try-catch를 사용하여 예외처리를 하지만 다음과 같은 차이점이 있다.
fun parseInt(str : String) : Int{
try{
return str.toInt()
}catch(e : NumberFormatException){
throw IllegalArgumentException("주어진 ${str}는 숫자가 아닙니다")
} //catch 문에서 타입이 뒤에 위치하고, new를 사용하지 않음
}
문자를 숫자형태로 반환해주는 방식인데, 만일 숫자형태로 바꿀 수 없는 문자가 오면 예외처리를 하는 코드이다.
자바와 다르게 catch문에서 타입이 뒤에 위치하고, new를 사용하지 않는 차이점이 존재한다.
또한, try catch도 if else, when 문과 같이 하나의 expression으로 인식하기 때문에
다음과 같이 return을 하나로 합쳐 적어줄 수 있다.
fun parseInt1(str : String) : Int?{
return try{
str.toInt()
}catch (e : NumberFormatException){
null
}
}
2. checked Exception, unchecked Exception
fun readFile(){
val currentFile = File(".")
val file = File(currentFile.absolutePath + "a.txt")
val reader = BufferedReader(FileReader(file))
println(reader.readLine())
reader.close()
}
파일의 경로에 따라 해당 파일에 있는 내용들을 한 줄씩 출력하는 함수이다.
자바에서는 IOException을 처리했어야하는데 위의 코드처럼 코틀린에서는 안적어줘도 된다.
왜냐하면 코틀린에서는 checked Exception과 unchecked Exception을 구분하지 않기 때문이다.
그래서 위와 같이 throw IOException을 해주지 않아도 된다!!!
3. try with resources
public void readFile3(String path) throw IOException{
try(BufferedReader reader = new BufferedReader(new FileReader(path))){
System.out.println(reader.readLine());
}
}
위와 같은 기능을 하는 자바 코드이나, 이번엔 직접 경로를 받아서 reader를 거쳐 내용을 출력하는데
try하고 괄호가 생겨서 괄호 안에 외부 자원을 만들어주고, try가 끝나면 자동으로 이 외부 자원을 닫아주는
try with resources구문이다.
반면 코틀린에서는 try with resources가 없어지고, use라는 확장함수를 사용한다.
fun readFile1(path : String){
BufferedReader(FileReader(path)).use { reader ->
println(reader.readLine())
}
}
use를 사용하여 close를 호출해준다는 점에서 자바하고와의 차이점이 존재한다.
'Kotlin > Basic' 카테고리의 다른 글
[Kotlin/Basic] 코틀린에서의 클래스 (0) | 2022.08.15 |
---|---|
[Kotlin/Basic] 코틀린에서의 함수 (0) | 2022.08.14 |
[Kotlin/Basic] 코틀린에서의 반복문 (0) | 2022.07.27 |
[Kotlin/Basic] 코틀린에서의 제어문 (0) | 2022.07.25 |
[Kotlin/Basic] 코틀린에서의 연산자 (0) | 2022.07.22 |