Kotlin

예외 처리

공부처음하는사람 2023. 12. 23. 19:50

예외 (exception)

  • 실행 도중의 잠재적인 오류까지 검사할 수 없기 때문에 정상적으로 실행이 되다가
    비 정상적으로 프로그램이 종료되는 경우
  1. 운영체제의 문제 (잘못된 시스템 호출의 문제)

2. 입력값의 문제 (존재하지 않는 파일 혹은, 숫자 입력란에 문자 입력 등)
3. 받아들일 수 없는 연산 (0으로 나누기 등0
4. 메모리 할당 실패 및 부족
5. 컴퓨터 기계 자체의 문제

예외를 대비하기 위한 구문

try {
    예외 발생 가능성 있는 문장
} catch (e: 예외처리 클래스명) {
    예외를 처리하기 위한 문장
} finally {
    반드시 실행되어야 하는 문장
}


fun main() {

    val a = 6
    val b = 0
    val c: Int

    try {
        c = a / b
        println("After")
    } catch (e: Exception) {
        println("Exception")
    } finally {
        println("Finally")
    }
}

산술 연산에 대한 예외를 따로 특정해서 잡을 때

try {
} catch (e: ArithmeticException){
    println("exception is handled. {$e.message}")
}    
  • ArithmeticException을 사용하면 /by zero 와 같은 상세한 내용을 표시함.

스택의 추적

try {
} catch (e: Exception){
    e.printStackTrace()
}    
  • printStackTrace()를 사용하면
    java.lang.ArithmeticException: / by zero
    at com.acaroom.kotlin.chap04.section3.TryCatchKt.main(TryCatch.kt:9)
    와같은 자세한 에러발생 위치를 표시해주게 된다.

특정 조건에 따른 예외 발생

throw Exception(message: String)
  • throw로 특정 예외를 발생시킬 수 있다.
fun main() {
    var amount = 600

    try {
        amount -= 100
        checkAmount(amount)
    } catch (e: Exception) {
        println(e.message)
    }
    println("amount: $amount")
}

fun checkAmount(amount: Int){
    if (amount < 1000)
        throw Exception("잔고가 $amount 으로 1000 이하입니다.")
}
  • 잔고가 1000 이하일때 throw를 사용해 예외를 발생시키는 코드이다.
  • amount에서 복합연산자로 값을 낸 후 catch에서 Exception값을 받아와 print하는 내용이다.

'Kotlin' 카테고리의 다른 글

캡슐화  (0) 2023.12.24
다형성  (0) 2023.12.23
확장 함수  (1) 2023.12.23
고차함수와 람다식  (1) 2023.12.23
내일배움캠프 12.21 TIL  (0) 2023.12.22