μμΈμ²λ¦¬
μμΈμ²λ¦¬μ μ₯μ
μλ° νλ‘κ·Έλ¨μμλ μμΈ μν©μ΄ λ°μνλ©΄, μμΈλ₯Ό λ°μμν΅λλ€. νΉν unchecked exception κ°μ μμΈλ νλ‘κ·Έλ¨ μ€ν μ€ λ°μλλ μμΈμΈλ°, μλΉμ€κ° μ μμ μΌλ‘ μ΄μμ€μ΄λ€κ°λ μμΈκ° λ°μνλ©΄ νλ‘μΈμ€κ° κ°μ μ μΌλ‘ μ’ λ£λ©λλ€.
λλ¬Έμ νλ‘κ·Έλ¨μ μμ μ μΈ μ΄μμ μμ΄μ μμΈλ νμμ λλ€. μ΄λ¬ν μμΈμ μΈ μν©μ μμΈμ²λ¦¬(Exception Handling)λ₯Ό ν΅ν΄ νλ‘μΈμ€κ° κ°μ μ μΌλ‘ μ’ λ£λμ§ μκ³ μμΈ μν©μ΄ λ°μν΄λ μ΄μμ΄ κ°λ₯νλλ‘ νΈλ€λ§μ ν μκ° μμ΅λλ€.
try, catch
try {
μμΈλ₯Ό μ²λ¦¬νκΈΈ μνλ μ€ν μ½λ;
} catch (e1) {
e1 μμΈκ° λ°μν κ²½μ°μ μ€νλ μ½λ;
} catch (e2) {
e2 μμΈκ° λ°μν κ²½μ°μ μ€νλ μ½λ;
}
...
finally {
μμΈ λ°μ μ¬λΆμ μκ΄μμ΄ λ¬΄μ‘°κ±΄ μ€νλ μ½λ;
}
β try λΈλ‘ : κΈ°λ³Έμ μΌλ‘ 맨 λ¨Όμ μ€νλλ μ½λλ‘ μ¬κΈ°μμ λ°μν μμΈλ catch λΈλ‘μμ μ²λ¦¬λ©λλ€.
β tcatch λΈλ‘ : try λΈλ‘μμ λ°μν μμΈ μ½λλ μμΈ κ°μ²΄λ₯Ό μΈμλ‘ μ λ¬λ°μ κ·Έ μ²λ¦¬λ₯Ό λ΄λΉν©λλ€.
β tfinally λΈλ‘ : μ΄ λΈλ‘μ try λΈλ‘μμ μμΈκ° λ°μν건 μ ν건 맨 λ§μ§λ§μ 무쑰건 μ€νλ©λλ€.
catch λΈλ‘κ³Ό finally λΈλ‘μ μ νμ μΈ μ΅μ μΌλ‘ λ°λμ μ¬μ©ν νμλ μλ€.
Exception ν΄λμ€
λͺ¨λ μμΈ ν΄λμ€λ Exception ν΄λμ€λ₯Ό μμλ°κ±°λ Exception ν΄λμ€μ νμ ν΄λμ€μ μνλ©°, μ£Όλ‘ νλ‘κ·Έλ¨ μ€ν μ€ λ°μν μμΈλ₯Ό λνλ΄λ μΌλ°μ μΈ μμΈ ν΄λμ€λ₯Ό μν λΆλͺ¨ ν΄λμ€λ‘ μ¬μ©λ©λλ€.
throw
μμΈλ₯Ό κ°μ λ‘ λ°μμν€λ ν€μλλ‘, κ°λ°μκ° νΉμ 쑰건μ΄λ μν©μμ μμΈλ₯Ό λ°μμμΌμΌ ν λ μ¬μ©λ©λλ€.
throwλ₯Ό μ¬μ©νλ©΄ μμΈλ₯Ό λͺ μμ μΌλ‘ μμ±νκ³ , μ΄λ₯Ό try-catch λΈλ‘μμ μ²λ¦¬ν μ μμ΅λλ€.
public class CustomException extends Exception {
// μ¬μ©μ μ μ μμΈ ν΄λμ€ μ μ
public CustomException(String message) {
super(message);
}
}
public class Example {
public static void main(String[] args) {
try {
// μ΄λ€ 쑰건μμ μμΈλ₯Ό λ°μμν€κ³ μ ν λ throw μ¬μ©
throw new CustomException("μ΄λ μ¬μ©μ μ μ μμΈμ
λλ€.");
} catch (CustomException e) {
// μμΈ μ²λ¦¬
System.out.println("μμΈ λ©μμ§: " + e.getMessage());
}
}
}
throwλ μμΈλ₯Ό λ°μμν€λ ν€μλμ λλ€.
throw λ₯Ό μ¬μ©νκΈ° μν΄μλ, μμΈ ν΄λμ€ κ°μ²΄λ₯Ό λ§λ€μ΄μ£Όκ³ throw λ‘ μμΈλ₯Ό κ°μ μ μΌλ‘ λ°μμν΅λλ€.
throws λ μμΈλ₯Ό λ λκΈ°λ λ°©λ²μΌλ‘ μ΄λ ν λ©μλλ₯Ό νΈμΆν λ κ·Έ λ©μλκ° throws ν€μλλ‘ μ μκ° λμ΄ μμΌλ©΄, ν΄λΉ λ©μλλ λ©μλλ₯Ό νΈμΆν κ³³μμ κ°μ μ μΌλ‘ μμΈλ₯Ό μ²λ¦¬ν΄μ£Όμ΄μΌ ν©λλ€. κ°μ μ μΌλ‘ μ²λ¦¬νμ§ μκ³ throws λ‘ μμΈλ₯Ό λ€μ λ λ겨λ λλ, ν΄λΉ λ°©λ²μ μ’μ§ μμ λ°©λ²μ λλ€!
μμΈλ₯Ό λ€μ λ λκΈ°κ² λλ€λ©΄ λΉμ μ μ’ λ£κ° λλ©΄μ μ΄ μμΈλ JVMμκ² λ겨μ§κ² λ©λλ€. JVMμ΄ λ°μμ JVM κΈ°λ³Έ μμΈμ²λ¦¬κΈ°μ μν΄ λ§μ§λ§μΌλ‘ μ²λ¦¬λ₯Ό νκ² λμ΄ μ€λ₯λ₯Ό μΆλ ₯ν©λλ€. throws λ μμΈλ₯Ό λ λκΈ°λ κ² λΏμ΄μ§, μμΈλ₯Ό μ²λ¦¬νλ κ²μ΄ μλλλ€. λ λκΈ΄ κ³³κΉμ§ μ²λ¦¬λ₯Ό νμ§ λͺ»νκΈ° λλ¬Έμ JVM μ μ€λ₯λ₯Ό λ±μ΅λλ€. νμ¬ μμΈ μ²λ¦¬κ° λ μ μλλ‘ νλ €λ©΄ try catch λ¬ΈμΌλ‘ μ²λ¦¬λ₯Ό νμ¬μΌ ν©λλ€.