예외 처리: 프로그램 실행 도중에 발생할 수 있는 에러를 적절하게 처리하는 방법
try = 예외가 발생할 확률이 높은 코드를 감싸는 구역
catch = 예외가 실제로 발생했을 때 처리하는 구역
finally = 예외에 상관 없이 실행해야하는 코드
fun method1() {
try {
예외가 발생할 가능성이 존재하는 코드
} catch(예외종류) {
예외가 발생했을때 처리할 코드
} finally{
예외랑 상관없이 항상 실행되어야 하는 코드
일반적으론 생략함
}
}
import java.lang.NumberFormatException
fun main(){
val test = try {
readLine()!!.toInt()
}catch (e:NumberFormatException){
null
}
println(test)
}
while(true) { //계속 입력 받도록 while을 사용
try { // 만약 정수형이 아닌 입력이 들어갈 경우(에러가 발생할 경우) catch로 바로 이동
var num1 = readLine()!!.toInt() //정수형만 입력 가능
println("내가 입력한 숫자는 ${num1}입니다")
break //에러가 없으면 탈출 가능
} catch(e:java.lang.NumberFormatException) { //정수형이 아닌 입력이 들어왔을 때 실행되는 영역
println("숫자를 입력하세요")
}
}
while(true) { //계속 입력 받도록 while을 사용
try { // 만약 정수형이 아닌 입력이 들어갈 경우(에러가 발생할 경우) catch로 바로 이동
var num1 = readLine()!!.toInt() //정수형만 입력 가능
println("내가 입력한 숫자는 ${num1}입니다")
break //에러가 없으면 탈출 가능
} catch(e:java.lang.NumberFormatException) { //정수형이 아닌 입력이 들어왔을 때 실행되는 영역
println("숫자를 입력하세요")
} finally {
println("키보드와의 연결은 정상적입니다")
}
}
종료되지 않게, 예외가 발생했다고 알려주는(던지는) 역할
어떤 처리를 하는 게 아니라 알려주기만 하는 역할
에러가 발생했을 때 로그를 남기거나, 처리하고 싶으면 try-catch 사용
기본 구조
fun method1(num1:Int) {
if(num1 > 10) {
throw 예외종류
}
}