π μ€λμ νμ΅ ν€μλ
- μμΈμ²λ¦¬
π₯ μ€λ₯μ μμΈ
μ€λ₯(error)λ μΌλ°μ μΌλ‘ νλ³΅μ΄ λΆκ°λ₯ν λ¬Έμ
- μ€λ₯λ μμ€ν λ 벨μμ, λλ νκ²½μ μΈ μ΄μ λ‘ λ°μ
- μ½λμ λ¬Έμ λ‘ λ°μνλ κ²½μ°λ μμ§λ§, μ€λ₯λ λ°μνλ κ²½μ° μΌλ°μ μΌλ‘ νλ³΅μ΄ λΆκ°λ₯
- μλ¬κ° λ°μν κ²½μ°, μ°λ¦¬λ μ΄λ ν μλ¬λ‘ νλ‘κ·Έλ¨μ΄ μ’ λ£λμλμ§λ₯Ό νμΈνκ³ λμ
μμΈ(Exception)λ μΌλ°μ μΌλ‘ νλ³΅μ΄ κ°λ₯ν λ¬Έμ
- νλ³΅μ΄ κ°λ₯νλ€λ κ²μ μ°λ¦¬κ° κ·Έ μμΈκ° λ°μν μ μλ€λ κ²μ μΈμ§νκ³ , λμνλ€λ κ²μ λλ€.
- νμ€μ μΌλ‘ μ½λλ 벨μμ ν μ μλ λ¬Έμ μν©μ λν λμμ μμΈμ²λ¦¬μ μν©λλ€.
π₯ μμΈμ μ’ λ₯
μ½λμ€ν κ΄μ μμ μμΈμ μ’ λ₯
- μ»΄νμΌ μλ¬(μμΈ)
- .java νμΌμ .class νμΌλ‘ μ»΄νμΌν λ λ°μνλ μλ¬
- λλΆλΆ μλ° νλ‘κ·Έλλ° μΈμ΄μ κ·μΉμ μ§ν€μ§ μμκΈ° λλ¬Έμ λ°μ
- μλ₯Ό λ€μ΄ μμ§ μμ ν΄λμ€λ₯Ό νΈμΆνλ€κ±°λ, μ κ·Ό λΆκ°λ₯ν νλ‘νΌν°λ λ©μλμ μ κ·Όνλ κ²½μ°μ λ°μ
- μ»΄νμΌ μλ¬κ° λ°μνλ κ²½μ° ν΄κ²°λ°©λ²μ λ¬Έλ²μ λ§κ² λ€μ μμ±
- λ°νμ μλ¬(μμΈ)
- λ¬Έλ²μ μΈ μ€λ₯λ μλλΌμ, μ»΄νμΌμ μ λμμ§λ§, νλ‘κ·Έλ¨μ΄ μ€νλμ€ λ§λ₯λ¨λ¦¬κ² λλ μμΈ
μμΈμ²λ¦¬ κ΄μ μμ μμΈμ μ’ λ₯
- νμΈλ μμΈ (Checked Exception)
- μ»΄νμΌ μμ μ νμΈνλ μμΈ
- λ°λμ μμΈμ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌν¨
π μ»΄νμΌ μμ μ νμΈνλ μμΈλΌλ 문ꡬ λλ¬Έμ, μ»΄νμΌ μλ¬μ ν·κ°λ¦¬λ©΄ μ λλ€.
μ°λ¦¬κ° μ΄λ―Έ νΉμ ν λ¬Έμ λ₯Ό μΈμ§νκ³ μμ΄μ, ν΄λΉ μμΈλ₯Ό μ μν΄ λμκ³ , κ·Έλ κΈ° λλ¬Έμ
μ»΄νμΌνλ λμ μ΄ μμΈμ λν μμΈμ²λ¦¬λ₯Ό νλμ§ νμΈν μ μλ μμΈ
μ¦, Checked Exceptionμ λν μμΈμ²λ¦¬λ₯Ό νμ§ μμΌλ©΄ μ»΄νμΌ μλ¬κ° λ°μ
- λ―ΈνμΈλ μμΈ (Unchecked Exception)
- λ°νμ μμ μ νμΈλλ μμΈ
- μμΈμ²λ¦¬κ° λ°λμ νμνμ§ μμ μμΈ
π₯ try-catch, finally
- μμΈ μ μνκΈ°
class OurBadException extends Exception {
public OurBadException() {
super("μνν νλμ νλ©΄ μμΈμ²λ¦¬λ₯Ό κΌ ν΄μΌν©λλ€!");
}
}
- ν΄λμ€λ₯Ό λ§λ€κ³ , λ©μλλ₯Ό λ§λ€λ©° μ°λ¦¬μ λ©μλκ° μννλ€κ³ μ리기(throw, throws)
class OurClass {
private final Boolean just = true;
public void thisMethodIsDangerous() throws OurBadException {
if (just) {
throw new OurBadException();
}
}
}
- μνν λ©μλλ₯Ό μ¬μ©νλ€λ©΄, μμΈλ₯Ό νΈλ€λ§νκΈ°
public class StudyException {
public static void main(String[] args) {
OurClass ourClass = new OurClass();
try {
// 1. μνν λ©μλμ μ€νμ "μλ" ν΄ λ΄
λλ€.
// "μλ" ν΄λ³΄λ μ½λκ° λ€μ΄κ°λ λΈλμ
λλ€.
ourClass.thisMethodIsDangerous();
} catch (OurBadException e) {
// 2. μμΈκ° λ°μνλ©΄, "μ‘μμ" handling ν©λλ€.
// μμΈκ° λ°μνλκ²½μ° "handling" νλ μ½λκ° λ€μ΄κ°λ λΈλμ
λλ€.
// μ¦ try λΈλ λ΄μ ꡬ문μ μ€ννλ€κ° μμΈκ° λ°μνλ©΄
// μμΈκ° λ°μν μ€μμ λ°λ‘ μ½λ μ€νμ λ©μΆκ³
// μ¬κΈ° μλ catch λΈλ λ΄μ μ½λκ° μ€νλ©λλ€.
System.out.println(e.getMessage());
} finally {
// 3. μμΈμ λ°μ μ¬λΆμ μκ΄μμ΄, μ€νμμΌμΌ νλ μ½λκ° λ€μ΄κ°λλ€.
// 무쑰건 μ€νλλ μ½λκ° λ€μ΄κ°λ λΈλμ
λλ€.
System.out.println("μ°λ¦¬λ λ°©κΈ μμΈλ₯Ό handling νμ΅λλ€!");
}
}
}
π μ€λμ νκ³
μμΈμ²λ¦¬μ λν΄μ μ΄ν΄λ νμ§λ§, μμ©μ ν μ μμμ§λ λͺ¨λ₯΄κ² μ΅λλ€.
λ°λ³΅λ νμ΅μ ν΅ν΄ λμ±λ κΉμ΄ μ΄ν΄νκ³
μμ©μ ν μ μμ λκΉμ§ λ°λ³΅μλ¬νκ² μ΅λλ€.