2022. 4. 30. 23:17γJAVA/μλ°μ μ μ
1οΈβ£ νλ‘κ·Έλ¨ μ€λ₯
νλ‘κ·Έλ¨μ΄ μ€ν μ€ μ΄λ€ μμΈμ μν΄μ μ€μλμ νκ±°λ λΉμ μμ μΌλ‘ μ’ λ£λλ κ²½μ°κ° μλλ° μ΄λ¬ν κ²°κ³Όλ₯Ό μ΄λνλ μμΈμ νλ‘κ·Έλ¨ μλ¬ λλ μ€λ₯λΌκ³ νλ€.
μ΄λ₯Ό λ°μμμ μ λ°λΌ μ»΄νμΌ μλ¬ μ λ°νμ μλ¬λ‘ λλ μ μλ€.
μ»΄νμΌ μλ¬λ μ»΄νμΌ ν λ λ°μνλ μλ¬μ΄κ³ , νλ‘κ·Έλ¨ μ€νλμ€μ λ°μνλ μλ¬λ₯Ό λ°νμ μλ¬λΌκ³ νλ€,
μ΄μΈμλ λ Όλ¦¬μ μλ¬κ° μλλ° μ»΄νμΌλ μ λκ³ , μ€νλ μ λμ§λ§ μλν κ²κ³Ό λ€λ₯΄κ² λμνλ κ²μ λ§νλ€.
- μ»΄νμΌ μλ¬ : μ»΄νμΌ μμ λ°μνλ μλ¬
- λ°νμ μλ¬ : μ€ν μμ λ°μνλ μλ¬
- λ Όλ¦¬μ μλ¬ : μ€νμ λμ§λ§ μλμ λ€λ₯΄κ² λμνλ κ²
μμ€μ½λλ₯Ό μ»΄νμΌνλ©΄ μ»΄νμΌλ¬κ° μμ€ μ½λ(*.java)μ λν΄ μ€νλ μλͺ»λ ꡬ문, μλ£ν μ²΄ν¬ λ±μ κΈ°λ³Έμ μΈ κ²μ¬λ₯Ό μννμ¬ μ€λ₯κ° μλμ§λ₯Ό μλ €μ€λ€.
μ»΄νμΌλ¬κ° μλ €μ€ μλ¬λ€μ λͺ¨λ μμ ν΄μ μ»΄νμΌμ μ±κ³΅μ μΌλ‘ λ§μΉκ³ λλ©΄, ν΄λμ€ νμΌ(*.class) μ΄ μμ±λκ³ , μμ±λ ν΄λμ€ νμΌμ μ€νν μ μκ² λλ κ²μ΄λ€.
νμ§λ§ μ»΄νμΌμ μλ¬μμ΄ μ±κ³΅μ μΌλ‘ λ§μ³£λ€κ³ ν΄μ νλ‘κ·Έλ¨μ μ€ν μμλ μλ¬κ° λ°μνμ§ μλ κ²μ μλλ€.
μ»΄νμΌλ¬κ° μμ€ μ½λμ κΈ°λ³Έμ μΈ μ¬νμ μ»΄νμΌ μμ λͺ¨λ κ±Έλ¬ μ€ μλ μμ§λ§, μ€ν λμ€μ λ°μν μ μλ μ μ¬μ μΈ μ€λ₯κΉμ§ κ²μ¬ν μ μκΈ° λλ¬Έμ μ»΄νμΌμ μλμμ΄λ μ€ν μ€μ μλ¬μ μν΄μ μλͺ»λ κ²°κ³Όλ₯Ό μ»κ±°λ νλ‘κ·Έλ¨μ΄ λΉμ μμ μΌλ‘ μ’ λ£λ μ μλ€.
μλ°μμλ μ€ν μ(runtime) μ λ°μν μ μλ νλ‘κ·Έλ¨ μ€λ₯λ₯Ό 'μλ¬Error' μ 'μμΈException' λκ°μ§λ‘ ꡬλΆνλ€.
- μλ¬ Error : νλ‘κ·Έλ¨ μ½λμ μν΄μ μμ΅λ μ μλ μ¬κ°ν μ€λ₯
- μμΈ Exception : νλ‘κ·Έλ¨ μ½λμ μν΄μ μμ΅λ μ μλ λ€μ λ―Έμ½ν μ€λ₯
μλ¬λ λ©λͺ¨λ¦¬ λΆμ‘± OutOfMemoryError λ μ€νμ€λ²νλ‘μ° StackOverFlowError μ κ°μ΄ μΌλ¨ λ°μνλ©΄ 볡ꡬν μ μλ μ¬κ°ν μ€λ₯μ΄κ³ μμΈλ λ°μνλλΌλ μμ΅λ μ μλ λΉκ΅μ λ μ¬κ°ν μ€λ₯μ΄λ€.
κ·Έλ¦¬κ³ μμΈ ν΄λμ€λ RuntimeException ν΄λμ€μ Exceptionν΄λμ€λ€λ‘ λλ μ μλ€.
RuntimeException ν΄λμ€λ€μ μ£Όλ‘ νλ‘κ·Έλλ¨Έ μ€μμ μν΄μ λ°μλ μ μλ μμΈλ‘ μλ°μ νλ‘κ·Έλλ° μμλ€κ³Ό κ΄κ³κ° μλ€.
ex) λ°°μ΄μ λ²μλ₯Ό λ²μ΄λ¨ ArrayIndexOutBoundsException
κ°μ΄ nullμΈ μ°Έμ‘°λ³μμ λ©€λ²λ₯Ό νΈμΆνλ €κ³ ν¨ NullPointerException
ν΄λμ€κ°μ νλ³νμ μλͺ»ν¨ ClassCastException
μ μλ₯Ό 0μΌλ‘ λλλ €κ³ ν¨ ArithmeticException
Exception ν΄λμ€λ€μ μ£Όλ‘ μΈλΆμ μν₯μΌλ‘ λ°μν μ μλ κ²λ€λ‘μ, νλ‘κ·Έλ¨μ μ¬μ©μλ€μ΄ λμμ μν΄μ λ°μνλ κ²½μ°κ° λ§λ€.
ex) μ‘΄μ¬νμ§ μλ νμΌμ μ΄λ¦ μ λ ₯ FileNotFoundException
μ€μλ‘ ν΄λμ€μ μ΄λ¦μ μλͺ» μ μ ClassNotFoundException
μ λ ₯ν λ°μ΄ν° νμμ΄ μλͺ»λ DataFormatException
2οΈβ£ μμΈ μ²λ¦¬νκΈ° try-catch λ¬Έ
νλ‘κ·Έλ¨μ μ€νλμ€μ λ°μνλ μλ¬λ μ΄μ© μ μμ§λ§, μμΈλ νλ‘κ·Έλλ¨Έκ° μ΄μ λν μ²λ¦¬λ₯Ό 미리 ν΄μ£Όμ΄μΌνλ€.
μμΈ μ²λ¦¬λ νλ‘κ·Έλ¨ μ€ν μ λ°μν μ μλ μκΈ°μΉ λͺ»ν μμΈμ λ°μμ λλΉν μ½λλ₯Ό μμ±νλ κ²μ΄λ©°, μμΈ μ²λ¦¬μ λͺ©μ μ μμΈμ λ°μμΌλ‘ μΈν μ€ν μ€μΈ νλ‘κ·Έλ¨μ κ°μμ€λ° λΉμ μ μ’ λ£λ₯Ό λ§κ³ , μ μμ μΈ μ€νμνλ₯Ό μ μ§ν μ μλλ‘ νλ κ²μ΄λ€.
μμΈμ²λ¦¬
μ μ : νλ‘κ·Έλ¨ μ€ν μ λ°μν μ μλ μμΈμ λλΉν μ½λλ₯Ό μμ±νλ κ²
λͺ©μ : νλ‘κ·Έλ¨μ λΉμ μ μ’ λ£λ₯Ό λ§κ³ , μ μμ μΈ μ€νμνλ₯Ό μ μ§νλ κ²
μμΈλ₯Ό μ²λ¦¬νκΈ° μν΄μλ try~catch λ¬Έμ μ¬μ©νλ€.
νλμ try λΈλ λ€μμλ μ¬λ¬ μ’ λ₯μ μμΈλ₯Ό μ²λ¦¬ν μ μλλ‘ νλ μ΄μμ catch λΈλμ΄ μ¬ μ μμΌλ©°, μ΄ μ€ λ°μν μμΈμ μ’ λ₯μ μΌμΉνλ λ¨ νκ°μ catch λΈλλ§ μνλλ€.
- tryλΈλ λ΄μμ μμΈκ° λ°μν κ²½μ°
1. λ°μν μμΈμ μΌμΉνλ catch λΈλμ΄ μλμ§ νμΈνλ€.
2. μΌμΉνλ catch λΈλμ μ°Ύκ²λλ©΄, κ·Έ catch λΈλ λ΄μ λ¬Έμ₯λ€μ μννκ³ μ 체 try~catchλ¬Έμ λΉ μ Έλκ°μ κ·Έ λ€μ λ¬Έμ₯μ κ³μν΄μ μννλ€. λ§μΌ μΌμΉνλ catch λΈλμ μ°Ύμ§ λͺ»νλ©΄ μμΈλ μ²λ¦¬λμ§ λͺ»νλ€.
- try λΈλ λ΄μμ μμΈκ° λ°μνμ§ μμ κ²½μ°
1. catch λΈλμ κ±°μΉμ§ μκ³ μ 체 try ~ catch λ¬Έμ λΉ μ Έλκ°μ μνμ κ³μνλ€.
try λΈλμμ ArithmeticException μ΄ λ°μνμκΈ° λλ¬Έμ catch λΈλμ νλμ© μ°¨λ‘λ‘ κ²μ¬νκ² λλλ° μ²«λ²μ§Έ κ²μ¬μμ μΌμΉνλ catch λΈλμ μ°ΎμκΈ° λλ¬Έμ λλ²μ§Έ catch λΈλμ κ²μ¬νμ§ μκ² λλ€.
λ§μΌ try λΈλ λ΄μμ ArithmeticException μ΄ μλ λ€λ₯Έ μ’ λ₯μ μμΈκ° λ°μν κ²½μ°μλ λλ²μ§Έ catch λΈλμΈ Exception ν΄λμ€ νμ μ μ°Έμ‘°λ³μλ₯Ό μ μΈν κ³³μμ μ²λ¦¬λμμ κ²μ΄λ€.
3οΈβ£ printStackTrace() μ getMessage()
μμΈκ° λ°μνμ λ μμ±λλ μμΈ ν΄λμ€μ μΈμ€ν΄μ€μλ λ°μν μμΈμ λν μ λ³΄κ° λ΄κ²¨ μμΌλ©°, getMessage() μ printStackTrace()μ ν΅ν΄μ μ΄ μ 보λ€μ μ»μ μ μλ€.
printStackTrace() : μμΈ λ°μ λΉμμ νΈμΆ μ€νμ μμλ λ©μλμ μ 보μ μμΈ λ©μμ§λ₯Ό νλ©΄μ μΆλ ₯νλ€.
getMessage() : λ°μν μμΈν΄λμ€μ μΈμ€ν΄μ€μ μ μ₯λ λ©μμ§λ₯Ό μ»μ μ μλ€.
-> ArtimeticException μΈμ€ν΄μ€μ printStackTrace()λ₯Ό μ¬μ©ν΄μ νΈμΆ μ€νμ λν μ 보μ μμΈ λ©μμ§λ₯Ό μΆλ ₯νλ€.
try~catchλ¬ΈμΌλ‘ μμΈλ₯Ό μ²λ¦¬νμ¬ μμΈκ° λ°μν΄λ λΉμ μμ μΌλ‘ μ’ λ£νμ§ μλλ‘ ν΄μ£Όλ λμμ printStackTrace() λλ getMessage() μ κ°μ λ©μλλ₯Ό ν΅ν΄μ μμΈμ λ°μ μμΈμ μ μ μλ€.
λ©ν° catchλΈλ
jdk1.7λΆν° μ¬λ¬ catchλΈλμ '|' κΈ°νΈλ₯Ό μ¬μ©ν΄μ νλμ catch λΈλμΌλ‘ ν©μΉ μ μκ² λμλ€.
try {
...
} catch(ExceptionA | Exception B e) {
e.printStackTrace();
}
μ°Έκ³ λ‘ μ°Έμ‘°λ³μ eλ‘ λ©ν° catch λΈλμ '|' κΈ°νΈλ‘ μ°κ²°λ μμΈ ν΄λμ€λ€μ κ³΅ν΅ λΆλͺ¨μΈ μ‘°μ μμΈ ν΄λμ€μ μ μΈλ λ©€λ²λ§ μ¬μ©ν μ μλ€.