JiwonDev

์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

by JiwonDev

๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ€์žฅ ์‹ ๊ฒฝ์“ฐ๊ธฐ ๊ท€์ฐฎ์€ ์˜์—ญ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

 

# ์˜ˆ์™ธ ์ข…๋ฅ˜์™€ ํŠน์ง•

2021.07.07 - [Backend/Java] - #7 Exception (์˜ˆ์™ธ์ฒ˜๋ฆฌ)

 

#7 Exception (์˜ˆ์™ธ์ฒ˜๋ฆฌ)

์ž๋ฐ”์—์„œ์˜ ์˜ค๋ฅ˜, ์˜ˆ์™ธ ์ž๋ฐ”์—์„œ ์˜ˆ์™ธ, ์˜ค๋ฅ˜๋Š” java.lang.Throwable ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฉฐ ๊ตฌํ˜„ํ•˜๋ฉฐ 3๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค. Error ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ๋ฐ–์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ. ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ, ๋” ์ด์ƒ ์‹คํ–‰ ๋ถˆ๊ฐ€

jiwondev.tistory.com

  • Error
    ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ๋ฐ–์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ. ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ, ๋” ์ด์ƒ ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅ
    ๋ณดํ†ต ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ƒ๋จธ์‹  ์ž์ฒด์˜ ๋ฌธ์ œ๋กœ ์•ฑ ์ƒ์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
    => ์‹ ๊ฒฝ์“ฐ์ง€๋ง์ž, ๊ฐœ๋ฐœ์ž์˜ ์˜์—ญ์ด ์•„๋‹ˆ๋‹ค

  • Runtime Exception (= unchecked Exception)
    ๋Ÿฐํƒ€์ž„์‹œ์— ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ. ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ํ™•์ธํ•  ์ˆ˜ ์—†์–ด unchecked๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
    => ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”ผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ถ€์ฃผ์˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Checked Exception
    ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ๋“ค.
    => catch๋ฅผ ์žก๋“ ์ง€, throws๋กœ ๋‹ค์‹œ ๋˜์ง€๋˜์ง€ ๋ฐ˜๋“œ์‹œ ์žก์•„์„œ ์ฒ˜๋ฆฌํ•˜์ž!

 

 

# ์˜ˆ์™ธ ๋ธ”๋ž™ํ™€

try {
	...
} catch (Exception e) {
	// ์•„๋ฌด์ผ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”„๋กœ๊ทธ๋žจ๋งŒ ์•ˆ๋ฉˆ์ถ”๋ฉด ๋˜๋Š”๊ฑฐ์ง€! ์•”!
}
...
}catch (SQLException e){
    System.out.println(e); // ์ฝ˜...์†”?
    e.printStackTrace(); // ์ด๊ฑด ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค!
}

 

  • Thread-Safetyํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์ด๋‹ค
  • ์ฝ˜์†” IO๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹จ์œ„ํ…Œ์ŠคํŠธ, ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฝ˜์†” IO๋Š” ๋น„์šฉ์ด ๋น„์‹ธ๊ณ , ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณด์•ˆ์ƒ ์ข‹์ง€ ์•Š๋‹ค.

๊ทธ๋‚˜๋งˆ ์ด๊ฑด ์–‘ํ˜ธํ•œ ํŽธ์ด๋‹ค. ์‹ฌํ•œ ๊ฒฝ์šฐ throws๋กœ ๋ฌด์ฑ…์ž„ํ•˜๊ฒŒ ๋‹ค ๋˜์ ธ๋ฒ„๋ฆฌ๋Š” ์Šต๊ด€์„ ๊ฐ€์ง„ ๊ฐœ๋ฐœ์ž๋„ ์žˆ๋‹ค.

// ์•„ ๋ชฐ๋ผ~ ๋‹ˆ๊ฐ€ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•˜์„ธ์š”. ๋‚œ ์˜ˆ์™ธ ๋ฌด์‹œํ• ๋ž€๋‹ค
public void method1() throws Exception {
    method2();
}

public void method2() throws Exception {
    method3();
}

public void method2() throws Exception {
    ...
}

 

 

# ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•

  • ์˜ˆ์™ธ ๋ณต๊ตฌ
    ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์„œ ์ •์ƒ ์ƒํƒœ๋กœ ๋Œ๋ ค๋†“๊ธฐ

  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํšŒํ”ผ
    ์˜ˆ์™ธ๋ฅผ ์ž์‹ ์ด ๋‹ด๋‹นํ•˜์ง€ ์•Š๊ณ , ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ์ชฝ์œผ๋กœ ๋˜์ ธ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ(throws)
    - ๋ฌด์˜๋ฏธํ•˜๊ฒŒ, ๋ฌด์ฑ…์ž„ํ•˜๊ฒŒ ๋˜์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์—ญํ• ์— ๋”ฐ๋ฅธ ๋ถ„๋‹ด์ด๋‹ค.

  • ์˜ˆ์™ธ ์ „ํ™˜
    ์˜ˆ์™ธ๋ฅผ ๋ฐ–์œผ๋กœ ๋˜์ง„๋‹ค๋Š” ๊ฒƒ์€ ํšŒํ”ผ์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ๊ทธ๋Œ€๋กœ ๋„˜๊ธฐ์ง€ ์•Š๊ณ  ์ ์ ˆํ•œ ์˜ˆ์™ธ๋กœ ์ „ํ™˜ํ•ด์„œ ๋˜์ง.
    - ๋กœ์šฐ ๋ ˆ๋ฒจ์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ์˜๋ฏธ๋ฅผ ๋ถ„๋ช…ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด (์ถ”์ƒํ™”๋œ ์˜ˆ์™ธ๋กœ ๋งŒ๋“ฌ.)
    - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํฌ์žฅ

 

DAO ์—์„œ ๋ฐœ์ƒํ•œ SQLException์ด ์›น ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ๊นŒ์ง€ ์˜๋ฏธ์žˆ๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค ํ•ด์„œ ๋ฌด์Šจ ์†Œ์šฉ์ด ์žˆ์„๊นŒ? ๋ฐ˜๋Œ€๋กœ ์›น ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ์— throws SQLException์ด ๋‹ฌ๋ ค์žˆ์œผ๋ฉด ์ด๋ฅผ ๋„๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ? ์ด์ฒ˜๋Ÿผ ์Šค์Šค๋กœ ๋ณต๊ตฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ๋ผ๋ฉด, ๋น ๋ฅด๊ฒŒ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•ด์„œ ๋˜์ง€๋Š” ๊ฒƒ์ด ๋งž๋‹ค. ๋‹ค๋ฅธ ๊ณ„์ธต์˜ ๋ฉ”์„œ๋“œ์—์„œ ๋ถˆํ•„์š”ํ•˜๊ฒŒ throws ์„ ์–ธ์„ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ฒŒ ํ•ด์ฃผ์ž.

  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ƒ ์˜ˆ์™ธ์กฐ๊ฑด์ด ๋ฐœ๊ฒฌ๋˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์ฒดํฌ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ ์ ˆํ•˜๋‹ค. ์ ์ ˆํ•œ ๋Œ€์‘์ด๋‚˜ ๋ณต๊ตฌ ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ์–ด์ฐจํ”ผ ๋ณต๊ตฌํ•˜์ง€ ๋ชปํ•  ์˜ˆ์™ธ๋ผ๋ฉด ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•ด์„œ ๋˜์ ธ๋ฒ„๋ ค์„œ ๊ด€๋ฆฌ์ž(์˜ˆ์™ธ์ฒ˜๋ฆฌ ์„œ๋น„์Šค, ๋กœ๊ทธ ๊ฐ์ฒด)์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.

 

 

# ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ์˜ ๋ณดํŽธํ™”

์ž๋ฐ” ํ™˜๊ฒฝ์ด ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜๋ฉด์„œ, ์ฒดํฌ ์˜ˆ์™ธ์˜ ํ™œ์šฉ๋„์™€ ๊ฐ€์น˜๋Š” ์ ์  ๋–จ์–ด์ง€๊ณ  ์žˆ๋‹ค. ์˜ˆ์ „์—๋Š” ๋ณต๊ตฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ์žˆ๋‹ค๋ฉด ์ฒดํฌ ์˜ˆ์™ธ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ์ง€๊ธˆ์€ 100% ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋Ÿฐํƒ€์ž„(์–ธ์ฒดํฌ)์˜ˆ์™ธ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝํ–ฅ์ด์žˆ๋‹ค.

sda

์ž๋ฐ”๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์งˆ ๋–„ ์‚ฌ์šฉ๋˜๋˜ ์• ํ”Œ๋ฆฟ, AWT, Swing ๊ฐ™์€ ๋…๋ฆฝํ˜• ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ํ†ต์ œ ๋ถˆ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ ์˜ˆ์™ธ๋ผ๊ณ  ํ• ์ง€๋ผ๋„ ์ž‘์—…์ด ์ค‘๋‹จ๋˜์ง€ ์•Š๊ฒŒ ๋ณต๊ตฌํ•ด์•ผํ–ˆ๋‹ค. ์ง€๊ธˆ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ž ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ์ข…๋ฃŒ์‹œ์ผœ๋ฒ„๋ฆด ์ˆœ ์—†์œผ๋‹ˆ๊นŒ ๋ง์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์ž๋ฐ” ์„œ๋ฒ„ํ™˜๊ฒฝ์€ ๋‹ค๋ฅด๋‹ค. ์ˆ˜๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ฐ ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ธ ์ž‘์—…์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ค‘ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค๋ฉด ๊ทธ๋งŒ์ด๋‹ค. ๋งŒ์•ฝ ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด์˜ ์˜ค๋ฅ˜์ด๊ฑฐ๋‚˜ ์™ธ๋ถ€ ํ™˜๊ฒฝ์œผ๋กœ ์ธํ•ด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋ผ๊ณ  ํ•˜๋”๋ผ๋„ ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ณ  ์„œ๋ฒ„ ๊ด€๋ฆฌ์ž๋‚˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ†ต๋ณดํ•ด์ฃผ๋Š” ํŽธ์ด ๋” ๋‚ซ๋‹ค.

 

 

# ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์™ธ

๋ฐ˜๋ฉด์— ์‹œ์Šคํ…œ ๋˜๋Š” ์™ธ๋ถ€์ƒํ™ฉ์ด ์›์ธ์ด ์•„๋‹ˆ๋ผ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ์˜ํ•ด ์˜๋„์ ์œผ๋กœ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  ๋ฐ˜๋“œ์‹œ catchํ•ด์•ผํ•˜๋Š” ์˜ˆ์™ธ๋„ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณดํ†ต ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์™ธ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ๊ธˆ์•ก์„ ์€ํ–‰๊ณ„์ขŒ์—์„œ ์ถœ๊ธˆํ•˜๋Š”๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ๋งŒ์•ฝ ํ˜„์žฌ ์ž”๊ณ ๋ฅผ ๋„˜๋Š” ๊ธˆ์•ก์„ ์ถœ๊ธˆํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ์ ์ ˆํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

  1. ์ž”๊ณ  ๋ถ€์กฑ์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ฆฌํ„ด๊ฐ’(-1)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    - ์ผ๊ด€๋œ ์˜ˆ์™ธ ์ƒํ™ฉ์—์„œ, ๋ฐ˜ํ™˜๊ฐ’์— ๋Œ€ํ•œ ์ •์ฑ…์ด ์™„๋ฒฝํ•˜๊ฒŒ ๊ณต์œ ๋˜์–ด์•ผํ•˜๊ณ  ๋กœ์ง ํ๋ฆ„์ด ๋ณต์žกํ•ด์ง„๋‹ค.

  2. ์ •์ƒ์ ์ธ ํ๋ฆ„์„ ๋”ฐ๋ฅด๋Š” ์ฝ”๋“œ๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค์ ์ธ ์˜๋ฏธ๋ฅผ ๋ค ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค.
    - ์ด๊ฒŒ ๋ฐ”๋กœ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์™ธ์ด๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ catch๋ฅผ ๊ฐ•์š”ํ•œ๋‹ค.
    - ์˜ˆ๋ฅผ ๋“ค์–ด ์ž”๊ณ ๋ถ€์กฑ์ธ ๊ฒฝ์šฐ InsufficientBalanceException ๊ฐ™์ด ์ถ”์ƒํ™” ๋œ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.

 

 

# DAO ๊ธฐ์ˆ ์—์„œ ์ถ”์ƒํ™”๋œ ์˜ˆ์™ธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ด์œ ?

์˜ˆ์™ธ ํฌ์žฅ ์˜ˆ์‹œ - JdbcTemplate

SqlException( ์ฒดํฌ ์˜ˆ์™ธ )๋ฅผ ํฌ์žฅํ•ด์„œ DataAccessException( ๋Ÿฐํƒ€์ž„ ์—์™ธ, ์–ธ์ฒดํฌ )๋กœ ์ถ”์ƒํ™”๋œ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•˜๊ณ ์žˆ๋‹ค. 

public<T> T execute(ConnectionCallback<T> action)throws DataAccessException{
        Assert.notNull(action,"Callback object must not be null");

        Connection con=DataSourceUtils.getConnection(obtainDataSource());
        
        try{
            Connection conToUse=createConnectionProxy(con);
            return action.doInConnection(conToUse);
        } catch(SQLException ex){ // ์ €์ˆ˜์ค€์ด SQLException์„ ํฌ์žฅ
            String sql=getSql(action);
            DataSourceUtils.releaseConnection(con,getDataSource());
            con=null;
            // ์˜ˆ์™ธ๋ฅผ ํฌ์žฅํ•  ๋• ์ด๋ ‡๊ฒŒ ๊ธฐ์กด์˜ ์˜ˆ์™ธ(ex)๋ฅผ ์ค‘์ฒฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.
            throw translateException("ConnectionCallback",sql,ex);
        } finally{
            DataSourceUtils.releaseConnection(con,getDataSource());
        }
}

์Šคํ”„๋ง์ด ์™œ ์ด๋ ‡๊ฒŒ DataAccessException ๊ฐ™์ด ์ถ”์ƒํ™”๋œ ์˜ˆ์™ธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์ž. ์˜ˆ์™ธ๋ฅผ ํฌ์žฅํ•˜์—ฌ ์ถ”์ƒํ™”ํ•จ์œผ๋กœ์„œ ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค ๊ธฐ์ˆ (SQLException)์— ์˜์กด์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

public void add(User user) throws SQLException; //Jdbc api ๊ณ„์ธต
public void add(User user) throws PersistentException; //JPA ๊ณ„์ธต
public void add(User user) throws HibernateException; //Hibernate ๊ณ„์ธต

 

 

# ์ •๋ฆฌ

  • ์˜ˆ์™ธ๋ฅผ ์žก์•„์„œ ์•„๋ฌด๋Ÿฐ ์กฐ์ทจ๋ฅผ ์ทจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์˜๋ฏธ ์—†๋Š” throws ์„ ์–ธ์„ ๋‚จ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•˜๋‹ค.
  • ์˜ˆ์™ธ๋Š” ๋ณต๊ตฌํ•˜๊ฑฐ๋‚˜, ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์˜ค๋ธŒ์ ํŠธ๋กœ ์˜๋„์ ์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜, ์ ์ ˆํ•œ ์˜ˆ์™ธ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ข€ ๋” ์˜๋ฏธ ์žˆ๋Š” ์˜ˆ์™ธ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ๋ถˆํ•„์š”ํ•œ catch/throws๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์˜ˆ์™ธ ์ „ํ™˜์ด ์žˆ๋‹ค.
  • ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์˜ˆ์™ธ๋Š” ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ์ง์„ ๋‹ด๊ธฐ ์œ„ํ•œ ์˜ˆ์™ธ๋Š” ์ฒดํฌ ์˜ˆ์™ธ๋กœ ๋งŒ๋“ ๋‹ค.
  • JDBC์˜ SQLException์€ ๋Œ€๋ถ€๋ถ„ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์˜ˆ์™ธ์ด๋ฏ€๋กœ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋กœ ํฌ์žฅํ•ด์•ผ ํ•œ๋‹ค.
  • SQLExcetion์˜ ์—๋Ÿฌ ์ฝ”๋“œ๋Š” DB์— ์ข…์†๋˜๊ธฐ ๋•Œ๋ฌธ์— DB์— ๋…๋ฆฝ์ ์ธ ์˜ˆ์™ธ๋กœ ์ „ํ™˜๋  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • ์Šคํ”„๋ง์€ DataAccessException์„ ํ†ตํ•ด DB์— ๋…๋ฆฝ์ ์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ถ”์ƒํ™”๋œ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ ๊ณ„์ธต์„ ์ œ๊ณตํ•œ๋‹ค.
  • DAO๋ฅผ ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค ๊ธฐ์ˆ ์—์„œ ๋…๋ฆฝ์‹œํ‚ค๋ ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค ๋„์ž…๊ณผ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ ์ „ํ™˜, ๊ธฐ์ˆ ์— ๋…๋ฆฝ์ ์ธ ์ถ”์ƒํ™”๋œ ์˜ˆ์™ธ๋กœ ์ „ํ™˜์ด ํ•„์š”ํ•˜๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ