μμΈλ errorμ μΌμ’ μ΄λ©° νλ‘κ·Έλ¨μ΄ μνμ λλ μ»΄νμΌμμ λΆλ₯μνλ₯Ό μΌκΈ°ν©λλ€.
μμμ 보μ΄λ― Errorμ Exceptionμ μ°¨μ΄λ νλ‘κ·Έλ¨μ΄ λ©μΆμ΄ λ²λ¦¬λλ κ³μ μ€νν μ μλλμ μ°¨μ΄μ λλ€. λ μ ννκ² λ§νλ©΄ Errorλ νλ‘μΈμ€μ μν₯μ μ£Όκ³ , Exceptionμ μ°λ λμλ§ μν₯μ μ€λλ€.
μμΈ μ²λ¦¬λ μ΄λ¬ν μμΈκ° λ°μν κ²μ λλΉνμ¬ λ―Έλ¦¬ μμΈ‘ν΄ μ΄λ₯Ό μμ€μμμ μ μ΄νκ³ μ²λ¦¬νλλ‘ λ§λλ κ²μ λλ€. μ΄λ κ² μμΈ μ²λ¦¬λ₯Ό νκ²λλ©΄ κ°μμ€λ¬μ΄ μμΈκ° λ°μν΄λ μμ€ν λ° νλ‘κ·Έλ¨μ΄ λΆλ₯μνκ° λμ§ μκ³ μ μ μ€ν μνλ₯Ό μ μ§ν μ μμ΅λλ€.
μ»΄νμΌ μμ μ λ°μνλ μμΈλ₯Ό Exception(μΌλ°μμΈ) λΌκ³ νκ³ ,
νλ‘κ·Έλ¨ μ€νμμ λ°μνλ μμΈλ₯Ό RuntimeException(μ€νμμΈ) λΌκ³ ν©λλ€.
λ€λ₯Έ λ§λ‘ Exceptionμ Checked Exception, RuntimeExceptionμ Unchecked Exceptionμ΄λΌκ³ λ ν©λλ€.
μλ°μ Exception μ²λ¦¬μ½λλ try-catchλ¬Έμ΄ μμ΅λλ€.
try {
...
} catch(μμΈ1) {
...
} catch(μμΈ2) {
...
} finally {
...
try : μνν μ€μ μ½λκ° λ€μ΄κ°λ λΆλΆμΌλ‘ μμΈκ° λ°μνμ§ μμΌλ©΄ catchλ¬Έμ μ€νλμ§ μμ
catch : μμΈ λ°μ μ μ€νλλ λΆλΆ
finally : μμΈμ μκ΄ μμ΄ μ€νλλ λΆλΆ
try-catchλ¬Έμ μ΄μ©νμ§ μκ³ λ throws νΉμ throwλ₯Ό μ΄μ©ν΄ μ κ·Ήμ μΌλ‘ μλ¬λ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
μλλ μ¬μ©μ μ μ μμΈλ₯Ό λ§λλ μμ μ
λλ€.
public class PersonalException extends [Runtime]Exception {
}
λ©μλλ₯Ό μ μΈν λ throwsλ‘ μμΈλ₯Ό μ μΈνλ©΄, ν΄λΉ λ©μλμμ μ μΈν μμΈκ° λ°μνμ λ νΈμΆν λ©μλλ‘ μμΈκ° μ λ¬λ©λλ€.(μ²λ¦¬κ° μλ μ κ°)
λ§μ½ λ©μλμμ λ κ°μ§ μ΄μμ μμΈλ₯Ό λμ§λ €λ©΄, implementsμ²λΌ μ½€λ§λ‘ ꡬλΆνμ¬ μμΈ ν΄λμ€ μ΄λ¦μ μ μ΄μ£Όλ©΄ λ©λλ€.
try λΈλ‘ λ΄μμ μμΈλ₯Ό λ°μμν¬ κ²½μ°μλ throw λ€μ μμΈ κ°μ²΄λ₯Ό μμ±νκ±°λ, μμ±λμ΄μλ κ°μ²΄λ₯Ό λͺ
μν΄μ€λλ€λ€. throwν μμΈ ν΄λμ€κ° catch λΈλ‘μ μ μΈλμ΄ μμ§ μκ±°λ throws μ μΈμ ν¬ν¨λμ΄ μμ§ μμΌλ©΄ μ»΄νμΌ μλ¬κ° λ°μν©λλ€.
catch λΈλ‘μμ μμΈλ₯Ό throwν κ²½μ°μλ λ©μλ μ μΈμ throws ꡬ문μ ν΄λΉ μμΈκ° μ μλμ΄ μμ΅λλ€.
νλ‘κ·Έλλ° μ Exceptionμ μ²λ¦¬νλ μμΉλ λλ¨ν μ€μν©λλ€. νλ‘κ·Έλ¨μ μνμ¬λΆλ₯Ό κ²°μ νκΈ°λ νκ³ νΈλμμ μ²λ¦¬μλ λ°μ ν κ΄κ³κ° μκΈ° λλ¬Έμ μμΈλ₯Ό main λ©μλμμ μ²λ¦¬ν μ§, μ¬μ©μ μ§μ λ©μλμμ μ²λ¦¬ν μ§ κ³ λ €νλ κ²μ΄ μ’μ΅λλ€.
main() {
try {
func1();
func2();
}catch(μμΈ) {
rollback();
}
}
func1() throws μμΈ {
...
}
func2() throws μμΈ {
...
}
μ κ²½μ° func1
μ΄λ func2
μ€ νλλΌλ μμΈκ° λ°μνλ©΄ μ λΆ μ€νμ΄ μ·¨μλμ§λ§
main() {
func1();
func2();
}
func1(){
try {
...
}catch(μμΈ) {
rollback();
}
}
func2() {
try {
...
}catch(μμΈ) {
rollback();
}
}
μμ κ°μ΄ κ°λ³ λ©μλμμ μμΈμ²λ¦¬λ₯Ό νκ² λλ©΄ func1
μμ μλ¬κ° λ°μν΄λ func2
λ μ€νλ μ μμ΅λλ€.