본문 바로가기
Kotlin Language/Kotlin 기본 문법

Kotiln(코틀린) - 예외처리(try catch,throw)

by Classic Master 2023. 12. 5.
728x90

예외처리(Exception) ?

  • 함수를 실행하고 어떤 값을 반환하거나 비정상적으로 오류가 발생한 경우 예외를 던질(throw) 할 수 있습니다. 예외가 발생한 경우에는 함수를 호출한 쪽에서 예외를 잡아내거나(catch), 예외에 대해 처리를 하지 않는 경우 함수 호출 스택을 거슬러 올라가면서 예외를 처리하는 부분이 나올 때까지 예외를 다시 던질 수도 있습니다.(rethrow)

 

try catch finally

  • 기본적인 예외 처리는 try-catch 블록을 사용합니다.
try {
    // 예외가 발생할 수 있는 코드
} catch (e: SomeException) {
    // 해당 예외를 처리하는 코드
} catch (e: AnotherException) {
    // 다른 예외를 처리하는 코드
} finally {
    // 예외 발생 여부와 상관없이 항상 실행되는 블록
}

 

try catch 를 식으로 표현해보자

  •   try 키워드는 식이기 때문에 변수에 값을 대입할 수 있지만, 항상 본문을 중괄호로 둘러싸야 합니다
val result = try {
    // 예외가 발생하는 코드
    val list = listOf(1, 2, 3)
    list[10]
} catch (e: IndexOutOfBoundsException) {
    // IndexOutOfBoundsException에 대한 예외 처리 코드
    println("예외 처리")
    -1
} catch (e: ArithmeticException) {
    // 다른 예외에 대한 처리 코드 (실행되지 않음)
    -2
}
// result는 -1이 됨

throw ?

  • throw 키워드는 예외를 발생시킬 때 사용됩니다. 예외는 프로그램 실행 중에 예상치 못한 상황이나 오류를 나타내며, throw를 통해 예외를 명시적으로 발생시킬 수 있습니다.

 

fun divide(a: Int, b: Int): Int {
    if (b == 0) {
        throw ArithmeticException("0이 출력됩니다.")
    }
    return a / b
}
  • 이 예제에서 divide 함수는 두 정수를 인자로 받아 나누기 연산을 수행합니다. 그러나 만약 b가 0이라면 ArithmeticException을 발생시키고 예외 메시지를 포함한 예외 객체를 생성하여 던집니다.
fun grade(score: Int): String {
	if( score > 100 || score < 0)
 	throw ScoreInvalidException ( "범위를 초과했습니다." )
return when (score) {
	90..100 -> "A"
	80..89 -> "B"
	70..79 -> "C"
	60..69 -> "D"
	else -> "F
	}
}
  • score가 0에서 100 사이의 범위를 벗어나면 ScoreInvalidException을 발생시킵니다.
728x90
반응형