1. 예외처리
- 기본 구조는 try-catch-finally이다
- 코틀린은 Checked Exception을 지원하지 않는다.(코틀린에서의 예외는 모두 UnChecked Exception)
- 코틀린에서는 throws를 통해 예외 선언을 할 필요가 없다
- 코틀린의 try-catch블록은 값을 반환할 수 있다
val result: Int = try {
10 / 2
} catch (e: Exception) {
-1
}
Custom Exception
Custom Exception을 정의 할 때는 것은 Exception이나 RuntimeException 클래스를 상속하면 된다
코틀린에서는 Checked Exception이 없으므로 의미상의 차이로 구분해서 상속을 하면 된다
(비즈니스 로직 내 발생하는 에러는 RuntimeException으로 하는게 의미상 적절해 보인다)
/*
Throwable (클래스)
├── Exception (클래스)
│ ├── RuntimeException
│ └── IOException, etc.
└── Error (클래스)
*/
class CustomException(message: String) : Exception(message)
runCatching
runCatching을 활용하여 예외를 안전하게 처리할 수 있다
runCatching에 의해 생성된 결과에 따라 분기로 로직을 실행할 수 있다
val result = runCatching { // 코틀린 내장 함수로 성공 또는 예외를 Result<T>로 감싸주는 인라인 함수
val x = 11 / 0
x
}
result
.onSuccess { println("success: $it") }
.onFailure { println("fail: ${it.message}") }
인라인 함수란?
- 함수 호출을 없애고 본문을 직접 복사해서 넣는 고차 함수 최적화
- fun 앞에 inline 키워드를 통해 정의
- 객체 생성이 없고, 호출 오버헤드 없음
'공부' 카테고리의 다른 글
Kotlin 기본 문법 정리 - 컬렉션(Collection) (0) | 2025.08.01 |
---|---|
Kotlin 기본 문법 정리 - Nullable (0) | 2025.07.31 |
Kotlin 기본 문법 정리 - enum (1) | 2025.07.29 |
Kotlin 기본 문법 정리 - 타입 체크, 캐스팅 (0) | 2025.07.27 |
Kotlin 기본 문법 정리 - 접근 지정자 (0) | 2025.07.26 |