μλ°μ μμΈ μ²λ¦¬(Exception Handling)
μλ°μμ μμΈ(exception)μ΄λ μ¬μ©μμ μλͺ»λ μ‘°μμ΄λ κ°λ°μμ μ½λ© μ€μλ‘ μΈν΄ λ°μνλ νλ‘κ·Έλ¨ μ€λ₯λ₯Ό λ§νλ€. μμΈκ° λ°μνλ©΄ νλ‘κ·Έλ¨μ 곧λ°λ‘ μ’ λ£λκΈ° λλ¬Έμ μλ¬μ λμΌνλ, μμΈλ μμΈ μ²λ¦¬λ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ μ’ λ£νμ§ μκ³ μ μ μ€ν μνκ° μ μ§λλλ‘ ν μ μλ€.
μλ°μ μμΈμλ μΌλ° μμΈμ μ€ν μμΈκ° μλ€. μΌλ° μμΈλ Checked Exception, μ€ν μμΈλ Unchecked Exception μ΄λΌκ³ λΆλ₯Έλ€.
μΌλ° μμΈ(Checked Exception)λ λ°λμ κ°λ°μκ° μμΈ μ²λ¦¬λ₯Ό μ§μ μ§νν΄μΌ νλ€.
λ°λ©΄ μ€ν μμΈ(Unchecked Exception)μ κ°λ°μκ° μ²λ¦¬λ₯Ό νμ§ μμλ λλ€.
μ€ν μμΈ(Unchecked Exception)μ μ’ λ₯
RuntimeExceptionμ μμ ν΄λμ€λ€ λͺ¨λ ν¬ν¨, Unchecked Exceptionμ΄λ€.
try-catchλ¬ΈμΌλ‘ μμΈ μ²λ¦¬λ₯Ό μ§μ ν기보λ€λ μμΈκ° λ°μνμ§ μλκ³ νλ‘κ·Έλλ¨Έκ° μ£Όμν΄μΌ νλ€.
1-1. NullPointerException(java.lang.NullPointerException)
κ°μ²΄ μ°Έμ‘°κ° μλ μνμΌ λ λ°μνλ€. null κ°μ κ°λ μ°Έμ‘° λ³μλ‘ κ°μ²΄ μ κ·Ό μ°μ°μμΈ λνΈ(.)λ₯Ό μ¬μ©νμμ λ λ°μνλ€.
1-2. ArrayIndexOutOfBoundsException
λ°°μ΄μμ μΈλ±μ€ λ²μλ₯Ό μ΄κ³Όνμ¬ μ¬μ©ν λ λ°μνλ€.
1-3. NumberFormatException
λ¬Έμμ΄λ‘ λμ΄ μλ λ°μ΄ν°λ₯Ό μ«μλ‘ λ³κ²½νλ κ²½μ°κ° μλλ°, λ¬Έμμ΄μ μ«μλ‘ λ³ννλ λ©μλλ₯Ό Integer.parseInt(String s)μ΄λ€. νμ§λ§ 맀κ°λ³μκ° μ«μλ‘ λ³νλ μ μλ€λ©΄ java.lang.NumberFormatExceptionμ λ°μμκΈ΄λ€.
1-4. ClassCastException
νμ©λμ§ μλλ° μ΅μ§λ‘ νμ λ³νμ μλν κ²½μ° λ°μνλ€.
μΆμν΄λμ€ Animalμ μμνλ Dog, Cat ν΄λμ€μ RemoteControl μΈν°νμ΄μ€λ₯Ό μμνλ Television, Audio ν΄λμ€κ° μλ€κ³ κ°μ νλ©΄ μλ μ½λμ κ°λ€.
Animal animal = new Dog();
Dog dog = (Dog) animal; // λ¬Έμ μμ
RemotControl ex1 = new Television();
Television ex2 = (Television) ex1; // λ¬Έμ μμ
Animal animal = new Animal();
Dog dog = (Dog) animal; // ClassCastException λ°μ
μμΈ μ²λ¦¬ μ½λ (try - catch - finally)
μμΈ μ²λ¦¬λ₯Ό νλ μ½λλ μλμ κ°λ€.
try{
///μμΈκ° λ°μν κ°λ₯μ±μ΄ μλ μ½λ
.... ......... ;
.............. .. ; << 1. μ¬κΈ°μ μμΈκ° λ°μνμ λ
.............. .... ; << 2. μμΈ λ°μν κ³³ μλλ μ€ννμ§ μκ³ ,
}
catch(μμΈν΄λμ€ e) {
μμΈ μ²λ¦¬; << 3. catchλ¬Έμμ μμΈμ²λ¦¬λ₯Ό νλ€.
}
finally {
///λ¬΄μ¨ μΌμ΄ μλ νμ μ€ν
}
λ€μ€ catch λ¬Έ
.....
try{
// μμΈ 1 λ°μμμΉ
// μμΈ 2 λ°μμμΉ
}
catch(μμΈ1μ μ‘λ κ³³){
}
catch(μμΈ2λ₯Ό μ‘λ κ³³){
}
μμΈλ³λ‘ λ€μ€ catchλ¬Έμ ꡬμ±ν μ μμ§λ§ μμμ μμΈκ° λ°μνλ©΄ μλμ catchλ μ€ννμ§ μλλ€.
λ°λΌμ catch λΈλ‘μ μμ±ν λμλ μμ μμΈ ν΄λμ€κ° νμ μμΈ ν΄λμ€λ³΄λ€ λ°μ μμΉνλλ‘ μμ±ν΄μΌνλ€.
κ·Έ μ΄μ λ tryμμ μμΈκ° λ°μνλ©΄ catch λΈλ‘μ΄ μμ±λ μμλλ‘ μμμ μλλλ‘ μ°¨λ‘λ‘ κ²μ¬νλλ°, λ§μ½ μμ μμΈ ν΄λμ€κ° λ μμ μμλ€λ©΄ νμ μμΈ ν΄λμ€λ₯Ό μ€ννμ§ μκ² λλ€.
μ¦, νμ μμΈ ν΄λμ€κ° μμ μμΈ ν΄λμ€λ₯Ό μμνκΈ° λλ¬Έμ, μμ μμΈ ν΄λμ€λ₯Ό μ‘λ catch λΈλ‘μ΄ μ€νλκ² λλ€.
.....
try{
// FileNotFoundException μμΈ λ°μ
}
catch(Exception e){
// FileNotFoundExceptionμ Exceptionμ μμ ν΄λμ€μ΄λ―λ‘ μ΄ λΆλΆμ catchκ° μ€νλ¨
}
catch(FileNotFoundException e){
// μ μ FileNotFoundExceptionμ μ²λ¦¬νλ €λ μ΄ catch λΈλ‘μ μ€νλμ§ μμ
}
μμ μ½λλ₯Ό 보면 FileNotFoundExceptionμ Exception ν΄λμ€λ₯Ό μμνμκΈ° λλ¬Έμ catchμ κ±Έλ¦¬κ² λλ©΄ μλμ catch λ¬Έμ μ€νλμ§ μλλ€.
κ·Έλ¬λ―λ‘ catch μμΉλ₯Ό λ°κΎΈμ΄ μ£Όλ©΄λλ€.
.....
try{
// FileNotFoundException μμΈ λ°μ
}
catch(FileNotFoundException e){
// Exception
}
catch(Exception e){
// FileNotFoundException μ΄ μ€νλκ³ μ€ν
}
λ©ν° catch
μλ° 8 λΆν° νλμ catch λΈλ‘μμ μ¬λ¬ κ°μ μμΈλ₯Ό μ²λ¦¬ν μ μλ κΈ°λ₯μ΄ μκ²Όλ€.
try{
// μμΈ 1 λ°μμμΉ (νΉμ μμΈ 3 λ°μμμΉ)
// μμΈ 2 λ°μμμΉ
}
catch( μμΈ 1 | μμΈ 3 e) // | λ or λ‘ λ³΄λ©΄ λλ€. μμΈ 1 νΉμ μμΈ 3μ΄ λ°μνλ©΄
ν΄λΉν catch λΈλ‘μμ μ²λ¦¬νκ² λλ€.
{
μμΈ μ²λ¦¬
}
catch( μμΈ2 e)
{
μμΈ μ²λ¦¬
}
'π» BackEnd > π¨ Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
π¨ [Java] [Project] κ°λ¨ν μΌνλͺ° νλ‘μ νΈ λ§λ€κΈ° (0) | 2023.06.20 |
---|---|
π¨ [Java] [ν΄λμ€] μλ° ν΄λμ€ (0) | 2023.04.25 |
π¨ [Java] λΌμ΄λΈλ¬λ¦¬ / λͺ¨λ (0) | 2023.04.18 |
π¨ [Java] λ¬Όν μ¬κ³ κ΄λ¦¬ νλ‘κ·Έλ¨ λ§λ€κΈ° (0) | 2023.04.09 |
π¨ [Java] (static)μ μ λ³μ, λ©μλ (0) | 2023.04.07 |