PHpullh

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}") }
}

학습 팁

requireIllegalArgumentException을, checkIllegalStateException을 던집니다. 의미에 맞게 구분하세요.

주의할 점

requirecheck의 메시지를 생략하면 디버깅이 어렵습니다. 항상 관련 값을 포함한 설명적 메시지를 제공하세요.

자주 묻는 질문

require와 check란 무엇인가요?

require 는 인수 검증, check 는 상태 검증에 사용합니다. 조건 불충족 시 설명적 예외를 던집니다.

require와 check 학습 시 주의할 점은 무엇인가요?

require 와 check 의 메시지를 생략하면 디버깅이 어렵습니다. 항상 관련 값을 포함한 설명적 메시지를 제공하세요.