μμ
λ€μΌλ©΄μ try-catch
λ¬Έμ JSP μμ
JDBC κ΄λ ¨ μ½λ λ μ²μ λ§λ¬λ κ²μΌλ‘ κΈ°μ΅νλ€. κ·Έ λΉμ μ μ¬μ©νλμ§λ§ μκ³ λμ΄κ°μ μ΄λ€ μν©μ κΌ μ¨μ€μΌνκ³ μ΄λ€ μμΌλ‘ μ°λ©΄ μλλμ§ μμΈνλ μμ§ λͺ»νλ€. λΆλλ½μ§λ§ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ IDEκ° λΉ¨κ°μ€ κ·Έμ΄μ£Όλ©΄ μ°κ³ μλλ©΄ μ μ°κ³ κ·Έλ° μμ΄μ΄μ κΈ°λ₯ ꡬν ν λ λ€λ₯Έ λΈλ‘κ·Έλ₯Ό μ°Έκ³ νλ©΄ μμΈ μ²λ¦¬λ₯Ό ν΄μ€ λͺ¨μ΅μ λ³Ό λλ§λ€ λΆμνλ€. νμ§λ§ μ λλ‘ μμ§ λͺ»νκ³ κ·Έμ λ°λΌ μ°λ κ²μ μλ―Έκ° μλ κ² κ°μμ λμ€μ νλ² μ 리 ν΄λ΄μΌκ² λ€ μκ°νμλλ° μ΄λ² κΈ°νμ 곡λΆνκ³ νλ‘μ νΈμλ μ μ©μμΌλ³΄λ €κ³ νλ€. π
μλ¬ (Error)μ μμΈ (Exception)μ μ°¨μ΄
π μλ¬ (Error)
java.lang.Error
ν΄λμ€μ μλΈ ν΄λμ€λ€
- μλ¬λ μ€λ₯, μ¦ μμ€ν
μ λκ° λΉμ μμ μΈ μν©μ΄ λ°μνμ κ²½μ°μ μ¬μ©λλ€.
- μ£Όλ‘ μλ° VMμμ λ°μμν€λ κ²μ΄λ©° μ ν리μΌμ΄μ
μ½λμμ μ‘μ μ μκΈ° λλ¬Έμ μ ν리μΌμ΄μ
μμλ μλ¬μ λν μ²λ¦¬λ₯Ό μ κ²½μ°μ§ μμλ λλ€.
π μμΈ (Exception)
java.lang.Exception
ν΄λμ€μ κ·Έ μλΈ ν΄λμ€λ€
- κ°λ°μκ° λ§λ μ ν리μΌμ΄μ
μ½λμ μμ
μ€μ μμΈμν©μ΄ λ°μνμ κ²½μ°μ μ¬μ©λλ€.
1. Checked Exception
Exception
ν΄λμ€μ μλΈν΄λμ€μ΄λ©΄μ RuntimeException
ν΄λμ€λ₯Ό μμνμ§ μμ κ²
- μΌλ°μ μΌλ‘ μμΈλΌκ³ νλ κ²λ€μ 보ν΅
Checked Exception
- νμΈ μμ : μ»΄νμΌ λ¨κ³
- μμΈ λ°μ μ :
roll-back
νμ§ μλλ€.
- Checked Exceptionμ΄ λ°μν μ μλ λ©μλλ₯Ό μ¬μ©ν κ²½μ° λ°λμ
catch
λ¬ΈμΌλ‘ μ‘κ±°λ throws
λ₯Ό μ μν΄μ λ©μλ λ°μΌλ‘ λμ ΈμΌ μ»΄νμΌ μλ¬κ° μΌμ΄λμ§ μλλ€.
--> μκΉ μ²μμ λ§ν λΉ¨κ°μ€ γ
γ
- ex)
IOException
, SQLException
λ±..
IOException
μ νμΌ μ²¨λΆ κΈ°λ₯ ꡬνν λ λ§μ΄ λ³Έ κ² κ°λ€. νμΌ κ²½λ‘ λͺ» μ°Ύκ³ κ·Έλ΄ λ ?
2. Unchecked Exception
RuntimeException
μ μμν ν΄λμ€λ€
- νμΈ λ¨κ³ : μ€ν λ¨κ³
- μμΈ λ°μ μ :
roll-back
νλ€.
- λͺ
μμ μΈ μμΈμ²λ¦¬λ₯Ό κ°μ νμ§ μλλ€. (λ¬Όλ‘ μ‘μμ€λ μκ΄μμ)
- ex)
NullPointerException
, IllegalArgumentException
λ±
--> μμνμ§ λͺ»νλ λΆλΆμμ λ°μνλ κ²μ΄ μλλΌ κ°λ°μμ λΆμ£Όμλ‘ λ°μνλ κ²½μ°κΈ° λλ¬Έμ κ΅³μ΄ μμΈμ²λ¦¬λ₯Ό κ°μ νμ§ μλ κ²!
π μμΈμ²λ¦¬ λ°©λ²
1. μμΈ λ³΅κ΅¬
int maxretry = MAX_RETRY;
while(maxretry --> 0) {
try{
return;
}
catch (SomeException e) {
}
finally {
}
}
throw new RetryFailedException();
- μμΈ λ³΅κ΅¬μ ν΅μ¬ : μμΈκ° λ°μν΄λ μ ν리μΌμ΄μ
μ μ μμ μΈ νλ¦μΌλ‘ μ§νλλ€.
- μ μμ λ λ€νΈμν¬ νκ²½μ΄ μ’μ§ μμ μλ²μ μ μμ΄ μλλ μν©μ μμ€ν
μ μ μ©νλ©΄ ν¨κ³Όμ μ΄λ€.
2. μμΈμ²λ¦¬ ννΌ
public void add() throws SQLException{
}
- μμΈκ° λ°μνλ©΄ throwsλ₯Ό ν΅ν΄ νΈμΆν μͺ½μΌλ‘ μμΈλ₯Ό λμ§κ³ κ·Έ μ²λ¦¬λ₯Ό ννΌνλ κ²μ΄λ€.
- (μ λ§ λ§μ κ³³μμ μ무 μκ°μμ΄ λ¬΄λΆλ³ν throws μ¬μ©μ 무μ±
μνλ©° μννλ€κ³ μ€λͺ
νλ€.)
- κΈ΄λ°ν κ΄κ³μ μλ λ€λ₯Έ μ€λΈμ νΈμκ² μμΈμ²λ¦¬ μ±
μμ λΆλͺ
ν μ§κ² νκ±°λ, μμ μ μ¬μ©νλ μͺ½μμ μμΈλ₯Ό λ€λ£¨λ κ²μ΄ μ΅μ μ λ°©λ²μ΄λΌλ λΆλͺ
ν νμ μ΄ μμ΄μΌ νλ€.
3. μμΈ μ ν
.
.
.
catch(SQLException e){
if (e.getErrorCode() == MysqlErrorNumbers.ER_DUP_ENTRY)
throw DuplicateUserIdException();
else
throw e;
}
.
.
- μμΈλ₯Ό μ‘μμ λ€λ₯Έ μμΈλ₯Ό λμ§λ κ²μ΄λ€.
- λ§μ½ κ·Έλ₯ SQLExceptionμ κ·Έλλ‘ λμ§κ² λλ©΄ DAOλ₯Ό ν΅ν΄ μ¬μ©μλ₯Ό μΆκ°ν μλΉμ€ κ³μΈ΅ λ±μμλ μ SQLExceptionμ΄ λ°μνλμ§ μκΈ° νλ€λ€.
- μ μ½λ κ°μ κ²½μ° , μ€λ³΅λ μμ΄λ κ° λλ¬Έμ μλ¬κ° λλ κ²½μ° νμΈνκ³ μ’ λ λͺ
ννκ² μΈμ§ν μ μλλ‘ λκΈ° μν λ°©λ²μ΄λ€.
β μ£Όμν μ
- μμΈλ₯Ό μ‘μμ μλ¬΄λ° μ‘°μΉλ₯Ό μ·¨νμ§ μλ κ² ( catchλ¬Έμ λΉμλκ±°λ, μ½μμλ§ μ°μ΄λλ κ² λ±)
- μλ―Έ μλ throwsλ₯Ό λ¨λ°νμ§ λ§ κ²
- μμΈκ° λ°μνμ λ κ·Έ μμΈμ νμ
νκΈ° μ΄λ €μ κ°λ°μ λ¬Όλ‘ μ μ§λ³΄μμλ μ΄λ €μμ κ²ͺκ² λλ€.
π λ§μΉλ©°
- μ°Έκ³ ν λΈλ‘κ·Έ κΈ μ°μ λΆμ΄ κ²°λ‘ μμ "μμ€ν
μ νλ €ν κΈ°λ₯보λ€λ 보μμ΄ μ€μνλ€" λΌλ λ§μμ νμ
¨λ€. μμ§ κ²½νμ΄ μμ΄ κΈ°λ₯ ꡬνμλ§ μ§μ€νκ³ μμλ κ² κ°λ€. μ΅κ·Ό νλ‘μ νΈλ₯Ό μ§ννλ©΄μ κΈ°λ³Έμ μΈ κ²μν κΈ°λ₯ λ°μ μλλ°λ λ΄ μμκ³Όλ λ€λ₯΄κ² μμ ꡬλ©μ΄ λλ λͺ¨μ΅μ κ²½ννλ€. μμ§ νμ¬λ₯Ό λ€λλ κ²μ μλμ§λ§, λ€μ νλ² μκ°νκ² λλ κ³κΈ°κ° λμλ€. νλ €ν κΈ°λ₯κ³Ό λ§μ νΈμλ₯Ό μ£Όλ κ²λ μ€μνμ§λ§, μΌλ¨ μ¬μ©μκ° λ―Ώκ³ μΈ μ μλ μμ€ν
μ λ§λλ κ²μ΄ κ°μ₯ μ€μν κ² κ°λ€. 곡κ°μ΄ λμ΄ λ¨κ²¨λκ³ μ§ν₯νλ €κ³ νλ€.
reference !
μ΄μΌλ―Ό, "ν λΉμ μ€νλ§ 3.1_vol.1 μ€νλ§μ μ΄ν΄μ μ리", μμ΄μ½, p.279 - 291, 315
Java μμΈ(Exception) μ²λ¦¬μ λν μμ μκ° - https://www.nextree.co.kr/p3239/