**AssertionError**λ μλ°μμ **μλ¬(Error)**μ ν μ’
λ₯λ‘, μ£Όλ‘ νλ‘κ·Έλ¨μ λ
Όλ¦¬μ μΈ μ€λ₯κ° λ°μνμ λ μ¬μ©λ©λλ€. μ΄ μλ¬λ μΌλ°μ μΌλ‘ κ°λ°μκ° μμΈ‘ν μ μλ μν©μ΄ λ°μνμ λ μ΄λ₯Ό μ리기 μν΄ λμ§λλ€.
1. AssertionErrorμ λͺ©μ
- κ°λ° μ€μλ§ μ¬μ©:
AssertionErrorλ μ£Όλ‘ κ°λ° λ° λλ²κΉ λ¨κ³μμ νλ‘κ·Έλ¨μ λ΄λΆ μνλ₯Ό κ²μ¦νκΈ° μν΄ μ¬μ©λ©λλ€. - λΆκ°λ₯ν μν©μ λνλ: μ½λμμ μ λλ‘ λ°μν΄μλ μ λλ μν©μ΄ λ°μνμ λ μ΄λ₯Ό μ리기 μν΄ μ¬μ©ν©λλ€.
- μμΈ μ²λ¦¬μ κ°μν: κ²μ¬ μμΈ(checked exception)λ₯Ό μ²λ¦¬ν΄μΌ νλ λ²κ±°λ‘μμ νΌνκΈ° μν΄ μ¬μ©λ©λλ€.
2. μ¬μ© μμ
μμ 1: μ λ λ°μνμ§ μλ μμΈ μ²λ¦¬
Cloneableμ ꡬνν ν΄λμ€μμ clone() λ©μλλ₯Ό μ¬μ μν λ, CloneNotSupportedExceptionμ΄ λ°μν μ μμ΅λλ€. νμ§λ§ Objectμ clone() λ©μλλ μ΄ μμΈλ₯Ό λμ§ μ μλλ‘ μ μΈλμ΄ μμΌλ―λ‘, μ΄λ₯Ό μ²λ¦¬ν΄μΌ ν©λλ€.
@Override
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError(); // μ΄ μμΈλ μ λ λ°μνμ§ μμ
}
}- μ€λͺ
:
CloneNotSupportedExceptionμ κ²μ¬ μμΈμ§λ§, μ΄ μ½λμμλ μ λ λ°μνμ§ μμΌλ―λ‘, μ΄λ₯Ό μ‘μμAssertionErrorλ₯Ό λμ§λλ€. - μλ―Έ:
AssertionErrorλ₯Ό λμ§μΌλ‘μ¨ μ΄ μμΈκ° λ°μνλ©΄ λ Όλ¦¬μ μ€λ₯κ° μλ€λ κ²μ λνλ λλ€.
μμ 2: λΆκ°λ₯ν 쑰건 κ²μ¦
int result = calculateValue();
assert result >= 0 : "Result should not be negative";- μ€λͺ
:
assertν€μλλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄μ΄ κ±°μ§μΌ κ²½μ°AssertionErrorλ₯Ό λμ§λλ€. - μ£Όμ:
assertν€μλλ κΈ°λ³Έμ μΌλ‘ λΉνμ±νλμ΄ μμΌλ©°, μ€ν μ-eaμ΅μ μ μ¬μ©ν΄μΌ μλν©λλ€.
3. AssertionErrorμ μμΈ μ²λ¦¬
- Error vs. Exception:
Errorλ μ¬κ°ν μμ€ν μ€λ₯λ‘, νλ‘κ·Έλ¨μ΄ μ μμ μΌλ‘ 볡ꡬν μ μλ μν©μ λνλ λλ€.Exceptionμ νλ‘κ·Έλ¨μμ μ²λ¦¬ν μ μλ μμΈ μν©μ λνλ λλ€.
- AssertionErrorμ νΉμ§:
- Unchecked Error:
RuntimeExceptionμ²λΌAssertionErrorλ κ²μ¬ μμΈκ° μλλ―λ‘throwsμ μ μ μΈν νμκ° μμ΅λλ€. - νλ‘κ·Έλ¨ μ’ λ£ μ λ: λ°μ μ νλ‘κ·Έλ¨μ μ’ λ£μν€λ κ²μ΄ μΌλ°μ μ λλ€.
- Unchecked Error:
4. AssertionErrorλ₯Ό μ¬μ©νλ μ΄μ
- λΆνμν μμΈ μ ν λ°©μ§: κ²μ¬ μμΈλ₯Ό μ²λ¦¬νκΈ° μν΄ λΆνμν μ½λκ° μΆκ°λλ κ²μ λ°©μ§ν©λλ€.
- λ Όλ¦¬μ μ€λ₯ νμ: κ°λ°μκ° μμνμ§ λͺ»ν μν©μ΄ λ°μνμμ λͺ ννκ² λνλ λλ€.
- λλ²κΉ μ©μ΄μ±: μ΄λμμ μ€λ₯κ° λ°μνλμ§ μ¦μ μ μ μμ΄ λλ²κΉ μ΄ μ¬μμ§λλ€.
5. μ£Όμμ¬ν
- νλ‘λμ
μ½λμμλ μ¬μ©μ μ μ€ν΄μΌ ν©λλ€:
AssertionErrorλ μ£Όλ‘ κ°λ° λ° ν μ€νΈ λ¨κ³μμ μ¬μ©λλ©°, μ€μ μ΄μ νκ²½μμλ μ¬μ©μμκ² λ ΈμΆλμ§ μλλ‘ ν΄μΌ ν©λλ€. - μμ κ°λ₯ν μμΈ μν©μλ μ¬μ©νμ§ μμ΅λλ€: μ λ ₯ κ°μ΄ μλͺ»λμκ±°λ λ€νΈμν¬ μ€λ₯ λ± μμΈ‘ κ°λ₯ν μν©μμλ μ μ ν μμΈ(Exception)λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
6. μμ½
AssertionErrorλ νλ‘κ·Έλ¨μμ μ λλ‘ λ°μν΄μλ μ λλ λ Όλ¦¬μ μ€λ₯λ₯Ό λνλΌ λ μ¬μ©ν©λλ€.Cloneableμ ꡬνν ν΄λμ€μμclone()λ©μλλ₯Ό μ¬μ μν λ, λ°μν μ μλCloneNotSupportedExceptionμ μ²λ¦¬νκΈ° μν΄AssertionErrorλ₯Ό λμ§λλ€.- μ΄λ₯Ό ν΅ν΄ μ½λμ κ°λ μ±μ λμ΄κ³ , λΆνμν μμΈ μ²λ¦¬ μ½λλ₯Ό μ€μΌ μ μμ΅λλ€.
μΆκ° μ°Έκ³ :
-
assertν€μλ: μλ°μμassertλ₯Ό μ¬μ©νλ©΄ νΉμ μ‘°κ±΄μ΄ μ°ΈμΈμ§ κ²μ¬ν μ μμΌλ©°, κ±°μ§μΈ κ²½μ°AssertionErrorκ° λμ Έμ§λλ€. -
νμ© μμ:
public void setAge(int age) { assert age >= 0 : "Age cannot be negative"; this.age = age; }
-
μ€ν λ°©λ²: JVM μ€ν μ
-eaλλ-enableassertionsμ΅μ μ μ¬μ©νμ¬assertλ¬Έμ νμ±νν΄μΌ ν©λλ€.