KOTLIN · 예외처리
커스텀 예외 계층 (Custom Exception Hierarchy)
sealed class로 도메인별 예외 계층을 설계합니다. 예외의 구조적 처리와 exhaustive 검사를 지원합니다.
예외처리중급custom-exceptionsealed-classexception-hierarchydomain-error
핵심 설명
sealed class로 도메인별 예외 계층을 설계합니다. 예외의 구조적 처리와 exhaustive 검사를 지원합니다.
Kotlin code
sealed class AppException(message: String, cause: Throwable? = null)
: Exception(message, cause) {
class NetworkException(
message: String,
val statusCode: Int,
cause: Throwable? = null
) : AppException(message, cause)
class ValidationException(
val field: String,
val reason: String
) : AppException("검증 실패 - $field: $reason")
class AuthException(
message: String
) : AppException(message)
}
fun handleError(e: AppException): String = when (e) {
is AppException.NetworkException ->
"네트워크 오류(${e.statusCode}): ${e.message}"
is AppException.ValidationException ->
"입력 오류[${e.field}]: ${e.reason}"
is AppException.AuthException ->
"인증 오류: ${e.message}"
}
fun main() {
val errors = listOf(
AppException.NetworkException("타임아웃", 504),
AppException.ValidationException("email", "형식 불일치"),
AppException.AuthException("토큰 만료"),
)
errors.forEach { println(handleError(it)) }
}학습 팁
sealed class 예외는 when에서 모든 분기를 강제하므로 새 예외 타입 추가 시 처리 누락을 컴파일 타임에 잡을 수 있습니다.
주의할 점
예외 계층이 너무 깊으면 복잡해집니다. 2-3단계를 넘지 않도록 하고, 정말 다른 처리가 필요한 경우에만 하위 타입을 추가하세요.
자주 묻는 질문
커스텀 예외 계층 (Custom Exception Hierarchy)란 무엇인가요?
sealed class로 도메인별 예외 계층을 설계합니다. 예외의 구조적 처리와 exhaustive 검사를 지원합니다.
커스텀 예외 계층 (Custom Exception Hierarchy) 학습 시 주의할 점은 무엇인가요?
예외 계층이 너무 깊으면 복잡해집니다. 2-3단계를 넘지 않도록 하고, 정말 다른 처리가 필요한 경우에만 하위 타입을 추가하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.