βοΈ μ²μ νλ‘κ·Έλλ°μ μ ν λκ³ κ·Έλ κ³ , νμ¬κΉμ§λ κ·Έλ μ§λ§ μ½μμ°½μ λΉ¨κ° κΈμ¨κ° λμ¬ λλ κ°μκΈ° λ§μ λ¬Έμλ€μ΄ ν μ¬λΌμ¬ λ λ±κ³¨μ΄ μ€μΉνλ€.
μ²μ νλ‘κ·Έλλ° μ΅κ΄μ μλͺ» λ€μ¬μ κ·Έλ°μ§ μμΈλ μλ¬κ° λ°μνλ©΄ μ λ°μνλμ§ λ°μ Έλ³΄κΈ° λ³΄λ¨ μΌλ¨ μΉμλ²λ¦¬λ €κ³ λ©μΈμ§λ₯Ό 볡μ¬ν΄μ ꡬκΈμ°½μ κ²μνκ³ λ¨λ€μ΄ ν΄κ²°ν μ½λλ₯Ό κ·Έλλ‘ λ³΅μ¬, λΆνλ£κΈ° λ°λΉ΄λ κ² κ°λ€.
μλ°μ μ μ μ½μΌλ©΄μ μμΈμ λν΄ λ€μ μ νκ² λλλ° μ΄λ² κΈ°νμ μμΈ κ³΅ν¬μ¦μ μ΄κ²¨λ³΄λ €κ³ νλ€.
μμΈμ μ‘°μ
Reference Type μ±ν°μμ 곡λΆνλ λ΄μ©κ³Ό μ°κ²°ν΄μ, λͺ¨λ ν΄λμ€μ μ‘°μμ java.lang.Object(μ΄ν Object ν΄λμ€)μ΄λ€. μμΈμ μν ν΄λμ€λ€λ μ΄ μ‘°κ±΄μμ λ²μ΄λμ§ μλλ€. λ€λ§ λͺ¨λ μμΈλ€μ μλ²μ§λΌκ³ ν μ μλ μ‘΄μ¬κ° μλλ°, κ·Έ ν΄λμ€λ λ°λ‘ java.lang.Throwable(μ΄ν Throwable ν΄λμ€)μ΄λ€.
The Throwable class is the superclass of all errors and exceptions in the Java language. Only objects that are instances of this class (or one of its subclasses) are thrown by the Java Virtual Machine or can be thrown by the Java throw statement.
- Oracle Java 8 API
API λ¬Έμλ₯Ό λ€μ¬λ€λ³΄λ©΄ Throwable ν΄λμ€μ λν κ°μμ λν μ€λͺ μ΄ λμ μλλ°, κ°λ¨ν μμ νμλ©΄ Throwable ν΄λμ€λ Java μμ μΌμ΄λλ λͺ¨λ μλ¬μ μμΈμ λν SuperClass(μ΅μμ ν΄λμ€, λͺ¨λ μλ¬μ μμΈκ° κ°μ§λ κ³΅ν΅ λΆλͺ¨)μ΄λ€. Throwable ν΄λμ€λ₯Ό μμ λ°λ ν΄λμ€λ€λ§ JVMμ μν΄ μμΈ νΉμ μλ¬ λ°μ μ, throw μ²λ¦¬λλ€.
Throwable ν΄λμ€λ κΈ°λ³Έ μμ±μλ₯Ό ν΅ν΄ μ μΈ κ°λ₯νλ©°,
Stringμ λ§€κ° λ³μλ‘ λ°λ μμ±μλ₯Ό ν΅ν΄ μ§μ μμΈ λ©μΈμ§λ₯Ό μ§μ ν΄ μ μΈν μ μλ€.
- Throwable()
- Throwable(String message)
λν, Object ν΄λμ€λ₯Ό μμ λ°λ€λ³΄λ Object ν΄λμ€μ λ©μλλ₯Ό Overriding νμ¬ μ¬μ μν λ©μλλ μ‘΄μ¬νλ€. λλΆλΆμ λ©μλλ μμΈ νΉμ μλ¬ λ°μ μ 곡ν΅μ μΌλ‘ νμν κ²λ€λ§ λ§λ€μ΄μ Έμλ€.
- toString()
Throwable ν΄λμ€μλ λνμ μΈ νμ ν΄λμ€ λ κ°κ° μ‘΄μ¬νλλ°, μμμλ λ§μ΄ μΈκΈνλ java.lang.Error(μ΄ν Error ν΄λμ€)μ java.lang.Exception(μ΄ν Exception ν΄λμ€)μ΄λ€.
μ΄ λ ν΄λμ€λ μλ‘ λ€λ₯Έ μ°¨μ΄κ° μ‘΄μ¬νκΈ° λλ¬Έμ Throwable ν΄λμ€μμ κ°λΌμ‘λ€κ³ μ΄ν΄νλ©΄ νΈνλ©° μ΄ λ ν΄λμ€μ λν΄ μμ보μ.
Error / Exception
Error
Error ν΄λμ€λ IOError, ThreadDeath, VirtualMachineError λ± Error ν΄λμ€λ₯Ό μμλ°λ ν΄λμ€μ μ΄λ¦μ 보면 μ μ μλ― κ°λ°μμ μμ λ²μ΄λ νλ‘κ·Έλ¨ λ°κΉ₯μμ λ°μν μμΈλ₯Ό λ»νλ€. λλ¬Έμ Error ν΄λμ€λ νλ‘μΈμ€μ μν₯μ λ―ΈμΉλ€. κ·Έλ κΈ° λλ¬Έμ Error ν΄λμ€ λ° μμ ν΄λμ€λ λΉμ μμ μΈ μ‘°κ±΄ μμμ λ°μνκΈ° λλ¬Έμ try ~ catch ꡬ문μΌλ‘ ν΄κ²° ν μ μλ€. (μ ν리μΌμ΄μ λ¨μμ ν΄λΉ μ΄μμ λν΄ κ°λ°μκ° μ²λ¦¬νμ§ μμλ λλ€.)
Exception
κ°λ°νλ©΄μ κ°μ₯ λ§μ΄ λ§λκ² λκ³ , λ§λκΈ° λλ €μ΄ μ‘΄μ¬κ° λ°λ‘ Exception ν΄λμ€μ΄λ€. Exception ν΄λμ€λ Error ν΄λμ€μ λ€λ₯΄κ² try ~ catch ꡬ문μΌλ‘ ν΄λΉ μμΈλ₯Ό μ‘μ μ²λ¦¬ κ°λ₯νλ€. λλ¬Έμ μ΄μ λν΄ λ κ°μ§λ‘ λλμ΄ μ§λλ°, Checked Exceptionκ³Ό Runtime Exception(+ Unchecked Exception)μ΄λ€.
Runtime Exception(+ Unchecked Exception)
ν΄λΉ μμμ μνλ μμΈ ν΄λμ€λ RunTime Exception ν΄λμ€λ₯Ό ν¬ν¨ν μμ ν΄λμ€λ€μ λ»νλ€. μ΄λ€μ νλ‘κ·Έλ¨μ μ€ννλ μ€μ λ°μνλ μμΈμ μ§ν©μΌλ‘ NullPointerException, IndexOutOfBoundException λ±μ΄ μ΄μ μνλ€.(μλ°ν λ§νλ©΄ μ΄ μμΈ ν΄λμ€λ€μ Unchecked Exception ν΄λμ€λ€μ΄λ€.)
μ΄λ€μ νΉμ§μ λͺ
μμ μΌλ‘ μ²λ¦¬λ₯Ό νμ§ μμλ λλ€. μλνλ©΄ ν΄λΉ μμΈ ν΄λμ€λ€μ μ»΄νμΌ ν λκ° μλ μ€ν λ¨κ³μμ λ°μνλ μμΈλ€μ΄κΈ° λλ¬Έμ΄λ€. μ¦, throws μμ½μ΄λ₯Ό μ΄μ©ν΄ λ©μλμμ ν΄λΉ μμΈ λ°μ μ μ±
μ ννΌλ₯Ό νμ§ μμλ λκ³ , try ~ catch ꡬ문μ ν΅ν΄ κ΅³μ΄ μμΈ λ°μ μμ λν λμμ±
μ μΈμ°μ§ μμλ λλ€λ λ§μ΄λ€. λ€λ§, μ ν리μΌμ΄μ
κ°λ°μ μ§ννλ©΄μ μμ£Ό λ°μνλ Unchecked Exceptionμ λν΄ μ μ ν λλΉλ₯Ό ν΄λμ§ μμΌλ©΄ μλ²½νλ€κ³ μκ°ν μ½λλΌ ν μ§λΌλ μΈμ κ°λ λ§λκ² λλλΌ.
μ¬κΈ°μ μνλ μμΈ ν΄λμ€λ€μ νΈλμμ
μ, RollBackμ μννλ€λ μ λ κΈ°μ΅ν΄λλ κ²μ΄ μ’λ€.
221126 μμ !
λ°±κΈ°μ λμ [Effective Java] - Item 2 > IllegalArgumentException μμ μ λ€μ λ€, κ³Όκ±°μ μμ±ν λ΄μ©μ΄ μ κ° μκ³ μλ λΆλΆμ΄ μλͺ»λ λ΄μ©μ΄λΌ μ΄μ λν΄ μμ ν©λλ€. μ£μ‘ν©λλ€.
RuntimeException μ΄ RollBack μ μννλ€λ λ΄μ©μ Spring Framework μ κΈ°λ³Έ μ€μ μΌλ‘ ν΄λΉ Exception μ΄ μλλλΌλ κ°λ°μκ° μνλ λ°©ν₯μΌλ‘ μ€μ κ°λ₯ν©λλ€. λν, μ¬λ¬ λΈλ‘κ·Έ(μ λ₯Ό ν¬ν¨νπ’)μμ μ΄μ λν΄ μ€λͺ ν λ λ±μ₯νλ Transaction μ μλ―Έλ λͺ νν μ΄λ€ μλ―ΈμΈμ§ μ μ μμ΅λλ€. Database Transaction μΈμ§, Message Queue Transaction μΈμ§ μ μ μκΈ° λλ¬Έμ μ³μ§ λͺ»ν λ΄μ©μ λλ€.
κ·Έλ λ€λ©΄ Spring Framework μμλ μ RuntimeException λ°μ μ κΈ°λ³Έμ μΌλ‘ Transaction μ RollBack νλλ‘ λ§λ€μμκΉμ?
μ΄λ RuntimeException κ³Ό κ·Έμ μλΈ ν΄λμ€λ€μ μμ κ°λ₯ν λ²μμ μνμ§ μμ μ΄λ ν κ²½μ°λ λλΉνμ§ μμ μλ μμ΄ Transaction λ°μ μ RollBack μ νλ κ² μ λλ€.
Checked Exception
ν΄λΉ μμμ μνλ μμΈ ν΄λμ€λ μ»΄νμΌ μμ λ°μνλ μμΈ ν΄λμ€μ μ§ν©μΌλ‘, Runtime Exception μ μν ν΄λμ€λ₯Ό μ μΈν λͺ¨λ Exception ν΄λμ€λ₯Ό λ»νλ€.
μ¬κΈ°μ μν λνμ μΈ μμΈ ν΄λμ€λ‘λ IllegalClassFormatException, SQLException, IOException λ±μ΄ μ‘΄μ¬νλλ°, μ΄λ€μ try ~ catch ꡬμ μ΄λ throws μμ½μ΄ λ±μΌλ‘ κΌ λ©μλ λ¨μμ μ²λ¦¬λ₯Ό ν΄μ€μΌ νλ€. μλνλ©΄ Checked Exception ν΄λμ€λ€μ μ»΄νμΌ μμ λ°μνκΈ°μ μμΈλ₯Ό μ²λ¦¬ν΄μ£Όμ§ μμΌλ©΄ μ»΄νμΌμ΄ λμ§ μκΈ° λλ¬Έμ΄λ€.
κ·Έλ¬ν μ΄μ λ‘ Checked Exceptionμ μν ν΄λμ€λ€μ RollBackμ μννμ§ μλλ°, μμ§ κ²μ μ€λ ₯μ λΆμ‘±κ³Ό μ§μμ λμ΄ μ§§μμ κ·Έ μ΄μ μ λν΄ μ νν νμ νμ§ λͺ»νλ€. μ‘°κΈ λ μ°Ύμλ³΄κ³ ν΄λΉ λΆλΆ κ°μ ν΄μΌκ² λ€!
πβοΈ ν΄λΉ λΆλΆμ λν΄ κ³΅λΆνλ€ λ³΄λ λ§μ λΈλ‘κ·Έμμ μμΈ μ²λ¦¬ μ λ΅κ³Ό μ°κ²°λμ΄ μ€λͺ νκ³ μμλλ°, λλΆλΆ ν λΉμ μ€νλ§(μ±κ²½)μ μ½κ³ μμ±νμ κΈμ΄ λλΆλΆμ΄μλ€! μ‘°κΈ λ μ±μ₯νκ³ , κΈλ§ μ½μ΄λ μΆ©λΆν μ΄ν΄κ° λ λ κΌ ν λΉμ μ€νλ§ λ μμ λμ ν΄λ΄μΌκ² λ€!
μ°Έκ³ μ¬μ΄νΈ
'Programming > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
F008 - Garbage Collector (2) | 2021.05.16 |
---|---|
F007 - JVM : Memory Architecture (0) | 2021.05.14 |
F005 - Stack & Heap Memory (0) | 2021.05.08 |
F004 - Reference Type (0) | 2021.05.08 |
F003 - Access Modifier (0) | 2021.05.06 |