실행 도중에 예외가 발생해서 프로그램이 종료된다.
예외처리 클래스명은 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 클래스를 사용하면 더 구체적으로 나타낼 수 있다.
예외객체.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 블록에서 예외메세지를 출력한다.