반응형
[출처 - Kotlin In Action] [아래 내용들은 Kotlin In Action을 공부하면서 스스로 정리한 내용입니다]
kotlin의 예외 처리는 Java와 크게 다르지 않습니다. kotlin 문법으로 작성한다는 부분만 다를 것입니다.
그럼 code를 통해서 확인해 보겠습니다.
if(percentage ! in 0..100){
throw IllegalArgumentException("A percentage value must be between 0 and 100 : $percentage")
}
//or
var percentage =
if(number in 0 .. 100){
number
}else{
throw IllegalArgumentException("A percentage value must be between 0 and 100 : $number")
}
로 Java와 큰 차이가 없음을 확인 할 수 있습니다. 또한, try catch 문 역시 Java와 다르지 않습니다.
fun readNumber(reader: BufferedReader): Int? {
try {
val line = reader.readLine()
return Integer.parseInt(line)
}
catch (e: NumberFormatException) {
return null
}
finally {
reader.close()
}
}
fun main(args: Array<String>) {
val reader = BufferedReader(StringReader("239"))
println(readNumber(reader))
}
기본적으로 위와 같은 형태를 취할 수 있습니다. try 블록 안에서 실행을 하고, 정상적으로 수행이 끝나면 finally 블록을 수행합니다. 그러나 try 블록에서 exception이 발생하면 catch 블록이 수행되고 마지막으로 finally 블록이 수행 됩니다.
조금 더 kotlin 스럽게 code를 작성하면, try를 식으로 사용할 수 있습니다.
fun readNumber(reader: BufferedReader) {
val number = try {
Integer.parseInt(reader.readLine())
} catch (e: NumberFormatException) {
null
}
println(number)
}
fun main(args: Array<String>) {
var reader = BufferedReader(StringReader("239"))
readNumber(reader)
reader = BufferedReader(StringReader("not a number"))
readNumber(reader)
}
위의 경우 239는 숫자이기 때문에 239가 출력이 되고, not a number는 숫자 아닌 문자이기 때문에 catch 부분이 동작하고 null 이 출력 됩니다.
반응형
'2023년 이전 > kotlin' 카테고리의 다른 글
Kotlin - let, apply, run, with, also (0) | 2019.11.20 |
---|---|
ArrayList copy 관련 (0) | 2019.10.25 |
코틀린(Kotlin)- 대상을 이터레이션: while과 for 루프 (0) | 2019.10.11 |
코틀린(Kotlin)- 선택 표현과 처리 (0) | 2019.10.11 |
Kotlin 에서 JUnit 사용하기 (0) | 2019.08.27 |