
Chapter 08 - μμΈμ²λ¦¬
μμΈμ²λ¦¬
νλ‘κ·Έλ¨ μ€λ₯
- μ’
λ₯
- μ»΄νμΌ μλ¬ : μ»΄νμΌ μμ λ°μ
- λ°νμ μλ¬ : μ€ν μμ λ°μ
- λ Όλ¦¬μ μλ¬ : μ€νμ λμ§λ§, μλν λλ‘ μλνμ§ μλ κ²
- λ°νμμμ μλ¬μ μμΈ
- μλ¬λ νλ‘κ·Έλ¨ μ½λμ μν΄μ μμ΅λ μ μλ μ¬κ°ν μ€λ₯ (λ©λͺ¨λ¦¬ λΆμ‘±, μ€νμ€λ²νλ‘μ°)
- μμΈλ νλ‘κ·Έλ¨ μ½λμ μν΄μ μμ΅λ μ μλ λ€μ λ―Έμ½ν μ€λ₯
μμΈ ν΄λμ€μ κ³μΈ΅κ΅¬μ‘°
- λͺ¨λ μμΈμ μ΅κ³ μ‘°μμ Exception ν΄λμ€
- Exception ν΄λμ€μ κ·Έ μμλ€ (μ¬μ©μμ μ€μμ κ°μ μΈμ μΈ μμΈμΌλ‘ λ°μ)
- RuntimeException ν΄λμ€μ κ·Έ μμλ€ (μ£Όλ‘ νλ‘κ·Έλλ¨Έμ μ€μλ‘ λ°μ)
- Exception ν΄λμ€μ μμλ€μ μ΄λ κ² λ κ·Έλ£ΉμΌλ‘ λλ μ μμ
μμΈμ²λ¦¬νκΈ° - try-catchλ¬Έ
- μ μ : νλ‘κ·Έλ¨ μ€ν μ λ°μν μ μλ μμΈμ λν μ½λλ₯Ό μμ±
- λͺ©μ : νλ‘κ·Έλ¨μ λΉμ μ μ’ λ£λ₯Ό λ§κ³ μ μμ μΈ μ€νμνλ₯Ό μ μ§νκΈ° μν΄
- λ°μν μμΈλ₯Ό μ²λ¦¬νμ§ λͺ»νλ©΄ νλ‘κ·Έλ¨μ΄ λΉμ μμ μΌλ‘ μ’ λ£λλ©° JVMμ μμΈ μ²λ¦¬κΈ°κ° λ°μμ μμΈμ μμΈμ μΆλ ₯ν΄ μ€
- ꡬ쑰
- νλμ try λΈλ λ€μμλ νλ μ΄μμ catch λΈλ
- catch λΈλκ³Ό μΌμΉνλ μμΈμ μ’ λ₯κ° μλ μ μμΈ μ²λ¦¬ X
- catch λΈλ λ΄μ λ try-catchλ₯Ό λ§λ€ κ²½μ° κ°μ μ΄λ¦μ μ°Έμ‘° λ³μλ₯Ό μ¬μ©νλ©΄ μ λ¨
try-catchλ¬Έμμμ νλ¦
- try λΈλ λ΄μμ μμΈκ° λ°μν κ²½μ°
- μΌμΉνλ catch λΈλμ μ°Ύμ
- μΌμΉνλ catch λΈλμ μ°ΎμΌλ©΄ catch λΈλ λ΄μ λ¬Έμ₯ μν ν μ 체 try-catch λΉ μ Έλκ° λ€ κ·Έλ€μ λ¬Έμ₯ μν
- μΌμΉνλ catch λΈλμ λͺ» μ°ΎμΌλ©΄ μμΈλ μ²λ¦¬λμ§ λͺ»ν¨
- try λΈλ λ΄μμ μμΈκ° λ°μνμ§ μλ κ²½μ°
- catch λΈλμ κ±°μΉμ§ μκ³ μ 체 try-catch λΉ μ Έλκ° λ€ κ·Έλ€μ λ¬Έμ₯ μν
μμΈμ λ°μκ³Ό catch λΈλ
- μμΈκ° λ°μνλ©΄ λ°μν μμΈμ ν΄λΉνλ ν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λ¨
- 첫 λ²μ§Έ catchλΆν° λ΄λ €κ°λ©΄μ κ΄νΈ λ΄μ μ μΈλ μ°Έμ‘° λ³μμ μ’ λ₯μ μμΈ ν΄λμ€ μΈμ€ν΄μ€ νμΈ
- κ²μ¬λ instanceof μ°μ°μλ₯Ό μ΄μ©
- Exception ν΄λμ€λ₯Ό catchμ μ μΈνλ©΄ λͺ¨λ μμΈλ₯Ό μ²λ¦¬ κ°λ₯
- μμΈκ° λ°μνμ λ μμΈ ν΄λμ€μ μΈμ€ν΄μ€μμ
getMessage()
λ©μλλ λ°μν μμΈ ν΄λμ€μ μΈμ€ν΄μ€μ μ μ₯λ λ©μΈμ§λ₯Ό μ»μ μ μμ - μμΈκ° λ°μνμ λ μμΈ ν΄λμ€μ μΈμ€ν΄μ€μμ
printStachTrace()
λ©μλλ μμΈ λ°μ λΉμμ νΈμΆ μ€νμ μμλ λ©μλμ μ 보μ μμΈ λ©μΈμ§λ₯Ό νλ©΄μ μΆλ ₯ - JDK 1.7λΆν° '|' κΈ°νΈλ₯Ό μ¬μ©ν΄ μ¬λ¬ catch λΈλμ νλλ‘ ν©μΉ μ μλ λ©ν° catch λΈλμ μ§μ
- μμΈ ν΄λμ€μ κ°μμλ μ ν X
- λ μμΈ ν΄λμ€κ° μ‘°μκ³Ό μμμ κ΄κ³μΌ μ λΆνμν μ½λλ₯Ό μ κ±°νλΌλ μλ―Έμ μλ¬ λ°μ
- λ©ν° catch λΈλμμ μμΈκ° μ²λ¦¬λλ©΄ μ€μ λ‘ μ΄λ€ μμΈκ° λ°μνλμ§ μ μ μμ (μ°Έμ‘° λ³μ eλ μ°κ²°λ μμΈ ν΄λμ€λ€μ 곡ν΅λΆλͺ¨μΈ μ‘°μ μμΈ ν΄λμ€μ μ μΈλ λ©€λ²λ§ μ¬μ© κ°λ₯)
- μ°Έμ‘° λ³μ eλ μμμ΄λ―λ‘ κ°μ λ³κ²½ λΆκ°λ₯
μμΈ λ°μμν€κΈ°
- ν€μλ
throw
λ₯Ό μ¬μ©ν΄μ νλ‘κ·Έλλ¨Έκ° κ³ μμ μΌλ‘ μμΈ λ°μ κ°λ₯ - μ°μ°μ newλ₯Ό μ΄μ©ν΄μ μμΈ ν΄λμ€μ κ°μ²΄λ₯Ό λ§λ λ€ throw
- Exception ν΄λμ€λ€μ λ°μν κ°λ₯μ±μ΄ μλ λͺ¨λ λ¬Έμ₯λ€μ λν΄ μμΈμ²λ¦¬λ₯Ό ν΄μ€μΌ ν¨ (μ»΄νμΌ λμ§ μμ)
- RuntimeExceptionμ μμ ν΄λμ€λ€μ μ»΄νμΌ κ°λ₯, μμΈμ²λ¦¬λ₯Ό κ°μ νμ§ μλλ€. (unchecked μμΈ)
λ©μλμ μμΈ μ μΈνκΈ°
- ν€μλ throwsλ₯Ό μ¬μ©ν΄μ λ©μλ λ΄μμ λ°μν μ μλ μμΈλ₯Ό μ μΈ κ°λ₯
- λ©μλμ λ°μ κ°λ₯ν μμΈλ₯Ό λͺ μνμ¬ κ²¬κ³ ν νλ‘κ·Έλ¨ μ½λλ₯Ό μμ±ν μ μλλ‘ λμμ€
- λ©μλμ μμΈλ₯Ό μ μΈν λ μΌλ°μ μΌλ‘ RuntimeException ν΄λμ€λ₯Ό μ μ§ μμ
- λ³΄ν΅ λ°λμ μ²λ¦¬ν΄ μ£Όμ΄μΌ νλ μμΈλ€λ§ μ μΈ
- λ©μλμ throwsμ μμΈλ₯Ό λͺ
μνλ κ²μ νΈμΆν λ©μλμκ² μμΈλ₯Ό μ λ¬νμ¬ λ 맑기λ κ²μ μλ―Έ
- λ°λμ μ΄λμ κ°λ μ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌ ν¨
finally λΈλ
- μμΈμ λ°μ μ¬λΆμ μκ΄μμ΄ μ€νλμ΄μΌ ν μ½λλ₯Ό ν¬ν¨μν΄
- try-catch λ¬Έμ λμ μ νμ μΌλ‘ λ§λΆμ¬ μ¬μ©
- tryμ catchμ μ€λ³΅λλ λ΄μ©μ΄ μλ€λ©΄ finally λΈλμ ν¬ν¨μν¬ κ²
- try λΈλμμ return λ¬Έμ΄ μ€νλλ κ²½μ°μλ finally λΈλμ λ¬Έμ₯λ€μ΄ λ¨Όμ μ€νλ νμ νμ¬ μ€ν μ€μΈ λ©μλλ₯Ό μ’
λ£
- catch λΈλμμ return λ¬Έμ λ§λ¬μ λλ λ§μ°¬κ°μ§
μλ μμ λ°ν - try-with-resources λ¬Έ
- JDK1.7λΆν° μΆκ°λ try-catch λ¬Έμ λ³ν
- μ£Όλ‘ μ
μΆλ ₯μ κ΄λ ¨λ ꡬ문μμ μ μ©
- μ¬μ©ν νμ μμμ λ°νν΄μΌ νκΈ° λλ¬Έμ λ°λμ μ’ λ£ν΄ μ€μΌ νλ ν΄λμ€λ€
- try κ΄νΈ μμ κ°μ²΄λ₯Ό μμ±νλ λ¬Έμ₯μ λ£λ λ°©μ
- λ λ¬Έμ₯ μ΄μ λ£μ μ ';'λ‘ κ΅¬λΆ
- λ°λ‘ close()λ₯Ό νΈμΆνμ§ μμλ try λΈλμ λ²μ΄λλ μκ° μλμ μΌλ‘ close() νΈμΆ
- close() νΈμΆ ν catch λλ finally λΈλμ΄ μν
- μλμΌλ‘ close()κ° νΈμΆλ μ μμΌλ €λ©΄ AutoCloseableμ΄λΌλ μΈν°νμ΄μ€λ₯Ό ꡬνν κ²μ΄μ΄μΌλ§ ν¨
- λ§μ½ close()μμ μμΈκ° λ°μνμ μ
μ΅μ λ(suppressed)
λΌλ μλ―Έμ 머리λ§κ³Ό ν¨κ» μΆλ ₯- Throwableμ
void addSuppressed(Throwable exception)
λ©μλλ‘ μ΅μ λ μμΈλ₯Ό μΆκ° κ°λ₯ - Throwableμ
Throwable[] getSuppressed()
λ‘ μ΅μ λ μμΈλ₯Ό λ°ν
- Throwableμ
μ¬μ©μ μ μ μμΈ λ§λ€κΈ°
- λ³΄ν΅ Exception ν΄λμ€ λλ RuntimeException ν΄λμ€λ‘λΆν° μμλ°μ ν΄λμ€λ₯Ό λ§λ¦
- νμμ λ°λΌ μλ§μ μμΈ ν΄λμ€λ₯Ό μ ν κ°λ₯
- νμνλ€λ©΄ λ©€λ² λ³μλ λ©μλλ₯Ό μΆκ° κ°λ₯
- λ©μμ§, μλ¬μ½λ κ° λ±λ±μ μΆκ°νμ¬ getMessage()λ‘ μ‘°νν μ μλλ‘ κ΅¬ν κ°λ₯
super(msg)
λ‘ Stringμ 맀κ°λ³μλ‘ λ°λ μμ±μλ₯Ό μΆκ° κ°λ₯- κΈ°μ‘΄μλ μ£Όλ‘ Exceptionμ μμλ°μμ checked μμΈλ‘ μμ±νλ κ²½μ°κ° λ§μμ§λ§ μμ¦μ μμΈ μ²λ¦¬λ₯Ό μ νμ μΌλ‘ ν μ μλλ‘ RuntimeExceptionμ μμλ°μμ μμ±νλ μͺ½μΌλ‘ λ°λκ³ μμ
- checked μμΈλ λΆνμν κ²½μ°μλ try-catchλ¬Έμ λ£μ΄μ€μΌ νκΈ° λλ¬Έ
μμΈ λ΄λμ§κΈ°(exception re-throwing)
- ν λ©μλμμ λ°μν μ μλ μμΈκ° μ¬λΏμΌ λ λͺ κ°λ μ μΈλΆμ μ§μ (throwλ¬Έ), λͺ κ°λ try-catch λ¬ΈμΌλ‘ μ§μ μ²λ¦¬νλ λ°©λ²λ κ°λ₯
- λ¨ νλμ μμΈμ λν΄μλ μμͺ½μμ μ²λ¦¬νλλ‘ λλ μ μμ
- μμΈ λ΄λμ§κΈ°λ
μμΈλ₯Ό μ²λ¦¬ν νμ μΈμμ μΌλ‘ λ€μ λ°μμν€λ κ²
- μμΈ λμ§κΈ°λ₯Ό μν΄ throwλ‘ μμΈλ₯Ό νΈμΆν λ©μλ μͺ½μ μ λ¬νλ©΄ catch λΈλμμ return λ¬Έμ΄ νμνμ§ μμ
μ°κ²°λ μμΈ(chained exception)
- μμΈ Aκ° μμΈ Bλ₯Ό λ°μμμΌ°λ€λ©΄,
Aλ₯Ό Bμ μμΈ μμΈ
λΌκ³ λΆλ¦ - μμΈλ₯Ό μμ±ν νμ
initCause()
λ‘ μμΈ μμΈλ₯Ό λ±λ‘νκ³ throwλ‘ μμΈλ₯Ό λμ§ initCause()
λ Exception ν΄λμ€μ μ‘°μμΈ Throwable ν΄λμ€μ μ μλ κ²μΌλ‘ λͺ¨λ μμΈμμ μ¬μ© κ°λ₯- Throwable initCause(Throwable cause) : μ§μ λ μμΈλ₯Ό μμΈ μμΈλ‘ λ±λ‘ (Throwable ꡬνμμ κ°μ²΄ μμ μ μμΈ μμΈλ‘ λ±λ‘)
- Throwable getCause() : μμΈ μμΈλ₯Ό λ°ν
- μ¬λ¬ κ°μ§ μμΈλ₯Ό νλμ ν° λΆλ₯μ μμΈλ‘ λ¬Άμ΄μ λ€λ£¨κΈ° μν΄ μ°κ²°λ μμΈλ₯Ό μ¬μ©
- λ°μμν¨ μμΈμ μ‘°μ ν΄λμ€λ‘ μ§μ ν ꡬν μ μ€μ λ‘ λ°μν μμΈλ₯Ό μ μ μλ λ¬Έμ λ₯Ό ν΄κ²°νκ³ μμκ΄κ³λ₯Ό λ³κ²½νλ λΆλ΄μ μ€μ
- μλ‘ μμκ΄κ³κ° μλμ΄λ μκ΄μμ
- checked μμΈλ₯Ό unchecked μμΈλ‘ κ°μΈλ λ°©λ²
(μμ±μμ 맀κ°λ³μλ‘ μμΈ μΈμ€ν΄μ€λ₯Ό λ£μΌλ©΄ μμΈ μμΈλ‘ λ±λ‘λ¨)
μΌλ‘λ λ§μ΄ μ¬μ©λ¨
'Java > Javaμ μ μ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Chapter 10 - λ μ§μ μκ° & νμν (0) | 2022.04.28 |
---|---|
Chapter 09 - java.lang ν¨ν€μ§μ μ μ©ν ν΄λμ€ (0) | 2022.04.26 |
Chapter 07 - κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° 2 (0) | 2022.04.22 |
Chapter 06 - κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° 1 (0) | 2022.04.20 |
Chapter 05 - λ°°μ΄ (0) | 2022.04.19 |