Archives
Recent Posts
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[20일차 Kotlin] 예외처리(try - catch) 본문

Computer/Kotlin

[20일차 Kotlin] 예외처리(try - catch)

Wise-99 2023. 5. 24. 18:30

 

 

출처 : 안드로이드 앱스쿨 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