티스토리 뷰
반응형
Exception classes
코틀린에서 모든 예외 클래스는 Throwable 클래스를 상속받고 있습니다.
모든 예외 클래스는 메시지, 스택 트레이스, optional cause를 가지고 있습니다.
예외 객체를 던지기 위해서는 throw 식을 사용합니다.
fun main() {
throw Exception("Hi There!")
}
위 코드를 실행시키면 아래와 같이 예외가 발생됩니다.
Hi There이라는 메시지를 주고, 어느 위치에서 오류가 발생했는지 스택 트레이스를 보여줍니다.
Exception in thread "main" java.lang.Exception: Hi There!
at FileKt.main (File.kt:2)
at FileKt.main (File.kt:-1)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (:-2)
throw로 던져진 예외 객체를 잡기 위해서 try - catch 식을 사용합니다.
try {
// 블라블라~~ 사용하고 싶은 코드 작성
} catch (e: SomeException) {
// 예외 처리 하는 부분
} finally {
// 선택적인 finally 부분
}
try는 필수이고 catch 문은 0개이거나 여러개가 될 수도 있고 finally 문은 없을수도 있습니다.
그렇지만 catch나 finally 둘 중 하나는 필수로 필요합니다.
Try is an expression ( = Try 는 식 )
Java와 다르게 Kotlin에서 Try는 식이기 때문에 결과값을 반환할 수 있습니다.
val a: Int? = try { input.toInt() } catch (e: NumberFormatException) { null }
input이 5라고 가정하고 input.toInt()를 했을 때 결과 값인 5가 a 변수에 할당되고,
input이 "안녕"이라고 가정하고 input.toIng()를 했을 때는 NumberFormatException오류에 걸려 catch문으로 들어가게 되어 null값이 a 변수에 할당됩니다.
The Nothing type
Java와 다르게 Kotlin에서는 throw도 식이고, 이때 throw의 타입은 Nothing 입니다.
엘비스 연산자 ?: 를 이용해서 person.name의 값이 null 일 경우 예외를 던집니다.
val s = person.name ?: throw IllegalArgumentException("Name required")
위 코드처럼 사용하는 일이 제일 많은 것 같..
반응형
'JAVA, Kotlin' 카테고리의 다른 글
[Kotlin] Null 안정성, Null 처리 방법 (0) | 2023.04.01 |
---|---|
@Resource, @Autowired, @Inject 차이 (0) | 2021.11.01 |
람다 Lambda 란? (0) | 2021.06.23 |
컴파일러 vs 인터프리터 (0) | 2021.03.04 |
== 와 equals 차이? (0) | 2021.03.03 |
댓글