KOTLIN · 예외처리
require와 check
require는 인수 검증, check는 상태 검증에 사용합니다. 조건 불충족 시 설명적 예외를 던집니다.
예외처리입문requirecheckpreconditionvalidation
핵심 설명
require는 인수 검증, check는 상태 검증에 사용합니다. 조건 불충족 시 설명적 예외를 던집니다.
Kotlin code
class BankAccount(val owner: String, initialBalance: Int) {
init {
require(owner.isNotBlank()) { "소유자 이름은 필수입니다" }
require(initialBalance >= 0) { "초기 잔액은 0 이상이어야 합니다: $initialBalance" }
}
var balance: Int = initialBalance
private set
fun deposit(amount: Int) {
require(amount > 0) { "입금액은 양수여야 합니다: $amount" }
balance += amount
}
fun withdraw(amount: Int) {
require(amount > 0) { "출금액은 양수여야 합니다: $amount" }
check(balance >= amount) { "잔액 부족: 잔액=$balance, 출금=$amount" }
balance -= amount
}
}
fun main() {
val account = BankAccount("김철수", 10000)
account.deposit(5000)
println("잔액: ${account.balance}")
account.withdraw(3000)
println("잔액: ${account.balance}")
try { account.withdraw(50000) }
catch (e: IllegalStateException) { println("오류: ${e.message}") }
try { account.deposit(-100) }
catch (e: IllegalArgumentException) { println("오류: ${e.message}") }
}학습 팁
require는 IllegalArgumentException을, check는 IllegalStateException을 던집니다. 의미에 맞게 구분하세요.
주의할 점
require와 check의 메시지를 생략하면 디버깅이 어렵습니다. 항상 관련 값을 포함한 설명적 메시지를 제공하세요.
자주 묻는 질문
require와 check란 무엇인가요?
require 는 인수 검증, check 는 상태 검증에 사용합니다. 조건 불충족 시 설명적 예외를 던집니다.
require와 check 학습 시 주의할 점은 무엇인가요?
require 와 check 의 메시지를 생략하면 디버깅이 어렵습니다. 항상 관련 값을 포함한 설명적 메시지를 제공하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.