코틀린에서 예외 처리는 Java와 유사하지만 몇 가지 차이가 있습니다. 코틀린에서는 예외를 명시적으로 선언하지 않습니다. 예외를 던지는 함수에 대한 선언에서 throws 키워드가 필요하지 않습니다. 대신, 코틀린은 예외 처리를 위해 try, catch, finally 블록을 제공합니다.
예외 던지기
코틀린에서 함수는 특별한 표현식인 throw를 사용하여 예외를 던질 수 있습니다.
fun divide(a: Int, b: Int): Int {
if (b == 0) {
throw ArithmeticException("Division by zero")
}
return a / b
}
예외 처리
예외를 처리하기 위해 try, catch, finally 블록을 사용할 수 있습니다.
fun main() {
try {
val result = divide(10, 2)
println("Result: $result")
// 예외가 발생하지 않으면 이 부분은 실행됨
} catch (e: ArithmeticException) {
println("Error: ${e.message}")
} finally {
println("Finally block")
}
}
위의 코드에서 try 블록 안에서 divide 함수를 호출하고, 만약 예외가 발생하면 catch 블록이 실행됩니다. finally 블록은 예외 발생 여부에 상관없이 항상 실행됩니다.
사용자 정의 예외
코틀린에서는 사용자가 직접 예외 클래스를 정의할 수 있습니다. 보통 Exception 클래스를 상속받아 구현합니다.
class CustomException(message: String) : Exception(message)
fun exampleFunction() {
throw CustomException("This is a custom exception")
}
예외의 종류
1. 코틀린에서 모든 예외는 Throwable 클래스를 상속합니다. 그리고 두 가지 유형으로 나뉩니다.
2. Checked Exception: 명시적으로 처리해야 하는 예외로서, Exception 클래스를 상속하며, try, catch 블록으로 처리해야 합니다.
3. Unchecked Exception (Runtime Exception): 명시적인 예외 처리가 필요하지 않으며, RuntimeException 클래스를 상속합니다. 주로 프로그래머의 실수에 의한 예외나 런타임 시 발생하는 예외들이 여기에 해당합니다.
// Checked Exception
fun readFile() {
try {
// 파일을 읽는 작업
} catch (e: IOException) {
// IOException 처리
}
}
// Unchecked Exception
fun divide(a: Int, b: Int): Int {
if (b == 0) {
throw ArithmeticException("Division by zero")
}
return a / b
}
예외 처리는 안전한 코드를 작성하고 예기치 못한 상황에 대비하는데 중요한 부분입니다. 예외 처리를 통해 프로그램이 비정상적으로 종료되는 것을 방지하고 안정성을 높일 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 동시성 (0) | 2024.01.07 |
---|---|
코틀린 인라인 함수 (0) | 2024.01.07 |
코틀린 오버로딩한 메서드 생성 (0) | 2024.01.07 |
코틀린 노출된 선언 이름 변경 (0) | 2024.01.07 |
코틀린 정적 멤버 (0) | 2024.01.07 |