예외처리

OneTwoThree·2022년 7월 27일
0

부스트코스 코틀린

목록 보기
12/26

[부스트코스]예외가 발생했어요!

예외 exception

실행 도중에 예외가 발생해서 프로그램이 종료된다.

예외 처리 try-catch-finally

예외처리 클래스명은 Exception을 사용해도 된다.
finally 블록에 넣을 내용이 없다면 try-catch로만 예외처리를 구성해도 된다.

fun main() {
    val a = 6
    val b = 0
    val c : Int
    try{
        c=a/b //0으로 나눠서 예외 발생
        println("after")
    }
    catch (e:Exception)  {
        println("Exception")
    }
    finally {
        println("finally")
    }
}

Exception
finally

try블록에서 예외가 발생하면 바로 catch 블록 내용으로 넘어간다.
따라서 after는 출력되지 않는다.
Exception 클래스는 모든 예외를 잡아준다

ArithmeticException

산술 연산에 대한 예외는 ArithmeticException 클래스를 사용하면 더 구체적으로 나타낼 수 있다.
예외객체.message로 예외 정보를 얻을 수 있다.

스택의 추적


예외객체.printStackTrace()를 통해서 예외가 어디서 발생했는지 자세한 정보를 얻을 수 있다.

예외 발생시키기


throw 키워드를 이용해서 예외를 발생시킬 수 있다.
의도적으로 예외를 발생시키는 것이다.
예외메세지를 ()에 입력해준다

fun main() {

    try{
        val money:Int = readLine()!!.toInt()
        checkMoneyException(money)
    } catch(e:Exception){
        println(e.message)
    }
}

fun checkMoneyException(money:Int):Unit{
    if (money<0) throw Exception("금액은 0 미만일 수 없습니다")
}

-100
금액은 0 미만일 수 없습니다

checkMoneyException 함수에서 금액을 확인해서 0 미만이면 throw로 예외를 발생시킨다.
main에서 try블록에서 checkMoneyException 함수를 호출해서 금액이 0 이하면 예외를 발생시키고 예외가 발생하면 catch 블록에서 예외메세지를 출력한다.

0개의 댓글