안드로이드 개발자의 창고
[20일차 Kotlin] 예외처리(try - catch) 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 예외처리
예외
- 프로그램 실행 중 예측이 가능한 오류들을 예외라고 부른다.
- 예외가 발생하면 코드의 수행이 중단된다.
- 예외 처리는 예외가 발생했을 때 프로그램이 수행되는 것을 막고 예외 발생 시 동작해야 하는 코드를 수행시켜 프로그램이 문제없이 동작하게 하기 위한 목적을 가지고 있다.
예외 처리 기본 코드
try{
예외가 발생할 가능성이 있는 코드
}catch (e:예외클래스) {
예외가 발생했을 때 수행할 코드
}finally {
예외 발생 여부에 관계없이 수행해야 하는 코드 }
📖 예제 코드
fun main() {
try {
val a1 = 10 / 0
// val str:String? = null
// println(str!!.length)
// val str2 = "안녕하세요"
// val a2:Int = str2.toInt()
// println("a2 : $a2")
} catch(e:ArithmeticException){
println("수학적 오류가 발생했습니다")
} catch(e:NullPointerException){
println("Null 오류가 발생했습니다")
} catch(e:Exception){
println("그 외의 오류가 발생했습니다")
e.printStackTrace()
}
println("이 부분이 수행될까요?")
}
- 해당 코드들은 오류를 보여주는 예시로 try에 있는 주석을 하나씩 풀며 실행 결과를 확인한다.
- val a1 = 10 / 0
- 정수를 0으로 나누면 수학적 오류(ArithmeticException)가 발생한다.
- 해당 오류가 발생하면 catch(e:ArithmeticException){ ... } 부분의 코드가 실행된다.
- catch 하단 코드인 println("이 부분이 수행될까요?")도 수행된다.
- println(str!!.length)
- str은 null을 허용하는 변수로 str에는 null이 저장되어 있다.
- str에 !! 연산자를 사용하여 null을 허용하지 않는 변수로 변환을 시도했다.
- 그러나 str 안에는 null이 이미 들어가 있으므로 null 관련 오류(NullPointerException)가 발생한다.
- 해당 오류가 발생하면 catch(e:NullPointerException){ ... } 부분의 코드가 실행된다.
- catch 하단 코드인 println("이 부분이 수행될까요?")도 수행된다.
- val a2:Int = str2.toInt()
- str2에는 "안녕하세요"라는 문자열(String)이 저장되어있다.
- a2라는 int형 변수에 str2를 int형으로 변환하여 저장하는 것을 시도했다.
- 그러나 str2에 있는 문자열은 숫자로만 이루어진 문자열이 아니므로 오류(NumberFormatException)가 발생한다.
- 해당 오류가 발생하면 catch(e:Exception){ ... } 부분의 코드가 실행된다.
- catch 하단 코드인 println("이 부분이 수행될까요?")도 수행된다.
'Computer > Kotlin' 카테고리의 다른 글
[20일차 Kotlin] 스트림(Stream) (0) | 2023.05.24 |
---|---|
[20일차 Kotlin] 스레드(Thread) (0) | 2023.05.24 |
[19일차 Kotlin] Map (0) | 2023.05.24 |
[19일차 Kotlin] Set (0) | 2023.05.24 |
[19일차 Kotlin] List (0) | 2023.05.24 |