JavaRush /Java Blog /Random-KO /์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜
Ve4niY
๋ ˆ๋ฒจ 14

์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์˜ˆ์™ธ๋Š” Java(๋˜๋Š” ๊ธฐํƒ€) ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ์‹คํ–‰ ํ๋ฆ„์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์œ„๋ฐ˜์€ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ์œ„๋ฐ˜, 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ, ์ดˆ๊ธฐํ™” ๋ฌธ์ œ, ๋ถˆ๋ฒ• ๋ช…๋ น ์‹คํ–‰ ๋˜๋Š” ๊ธฐํƒ€ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java๋Š” ์›์น˜ ์•Š๋Š” ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋Ÿฌํ•œ Java ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Java ์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋…ผ์˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค . ๋‚˜๋Š” ๋…์ž๊ฐ€ ์ด๋ฏธ ์˜ˆ์™ธ ๊ณ„์ธต ๊ตฌ์กฐ, ํ™•์ธ๋œ ์˜ˆ์™ธ , ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ ๋ฐ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ ์— ์ต์ˆ™ ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค . ์—ฌ๊ธฐ์„œ๋Š” ํ”ผํ•ด์•ผ ํ•  ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์˜ˆ์™ธ์˜ ์ดํ•ด๊ด€๊ณ„์ž
์‹คํ–‰ ์Šค๋ ˆ๋“œ๊ฐ€ ์ค‘๋‹จ๋  ๋•Œ๋งˆ๋‹ค ์ด์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ๋Š” ํ™”๋ฉด, ์ผ๊ด„ ์ž‘์—… ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํŠธ๋ฆฌ๊ฑฐ๋Š” ํŠน์ • ํ˜•์‹์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ํ๋ฆ„์—์„œ ์ผ์ข…์˜ ์œ„๋ฐ˜์ด ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ํ™”๋ฉด ๊ธฐ๋ฐ˜ ํŠธ๋ฆฌ๊ฑฐ๋Š” ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋„์›€๊ณผ ์กฐ์–ธ์„ ์œ„ํ•ด ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด„ ์ฒ˜๋ฆฌ ๋˜๋Š” ๋…๋ฆฝํ˜• Java ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์˜ค๋ฅ˜ ๋ณด๊ณ ์„œ๊ฐ€ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์™„์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ์ผ์ข…์˜ ๋กœ๊ทธ ํ˜•์‹์œผ๋กœ ๋‚˜ํƒ€๋‚  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์—…๊ฐ€๋“ค์€ ๊ทธ๋“ค์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๋งˆ์Œ ์†์— ์žˆ๋Š” ๋‘๋ ค์šด NullPointerException์€ ๋งค์šฐ ์งœ์ฆ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž˜๋ชป ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค‘์š”ํ•œ ์ดํ•ด๊ด€๊ณ„์ž๋Š” ์˜ˆ์™ธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ์ด ์‚ฌ๋žŒ์€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹ค์ œ ์‹คํ–‰์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๊ฐ€์ง€์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ •๋ณด์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ƒ์„ฑ๋œ ์ผ์ข…์˜ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ์‚ฌ๋žŒ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ ์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ž๋Š” ๋ถ„์„์„ ์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ž์™€ ๋””๋ฒ„๊ฑฐ ๊ฐ„์˜ ์œ ์ผํ•œ ํ†ต์‹  ๋ฐฉ๋ฒ•์€ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋•Œ๋กœ๋Š” ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ๋กœ๊ทธ ๋กœ๊ทธ์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ๋Œ€ํ•œ ์‹ค์ œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ์ผ๋ถ€๋Š” ๊ฝค ์–ด๋ฆฌ์„์–ด ๋ณด์ด์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ๋•Œ๊นŒ์ง€ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š” ์‚ฌ๋žŒ.
๋นˆ ์˜ˆ์™ธ ๋ธ”๋ก
์ด๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์—์„œ ๊ฐ€์žฅ ์›์น˜ ์•Š๋Š” ์˜ค๋ฅ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์˜ˆ์™ธ๋Š” ๋‹จ์ˆœํžˆ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์—๋Š” ์˜ˆ์™ธ๋ฅผ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•œ ์ฃผ์„ ์ค„๋งŒ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. try{ }catch(SQLException sqe){ // do nothing } ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ๋งˆ์ง€๋ง‰ ๋ธ”๋ก๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๋“œ๋ฌธ ๊ฒฝ์šฐ์—๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. try{ }catch(SQLException sqe){ ... ... }finally{ try{ conn.close(); }catch(Exception e){ //leave it. } }
์˜ˆ์™ธ ๋ฉ”์‹œ์ง€์˜ ์ž˜๋ชป๋œ ์ผ๋ฐ˜ํ™”
์ด ์ ์€ ์ฃผ๊ด€์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•œ ํ›„ ์นœ๊ทผํ•œ ๋ฉ”์‹œ์ง€ ํ˜•์‹์œผ๋กœ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ•˜๋‚˜์˜ ์ผ๋ฐ˜ ๋ฉ”์‹œ์ง€๋กœ ๋ณ€ํ™˜๋˜๋ฉด ์›๋ณธ ๋ฉ”์‹œ์ง€์˜ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์†์‹ค๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด์•ผ ์ง€์› ํŒ€์— ๋ฌธ์˜ํ•  ๋•Œ ์‚ฌ์šฉ์ž๋Š” ์ ์ ˆํ•œ ๋กœ๊ทธ์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. try{ File file = new File(""); file.getCanonicalPath(); }catch(IOException ioe){ throw new Exception("File Processing Failed",ioe); } ๋‹ค์ค‘ ๊ณ„์ธต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ ๊ณ„์ธต์€ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜๊ณ  ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ํŠน์ • ์œ ํ˜•์˜ ์˜ˆ์™ธ๋ฅผ ์บ์ŠคํŒ…ํ•˜๋Š” ๊ฒƒ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต -> DataAccessException ์ƒ์„ฑ - ๋น„์ฆˆ๋‹ˆ์Šค ๊ตฌํ˜„ ๊ณ„์ธต -> BusinessException ์ƒ์„ฑ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค ๊ณ„์ธต -> ApplicationServiceException ์ƒ์„ฑ ๋ชจ๋“  ๊ฒƒ์ด ๋…ผ๋ฆฌ์ ์ธ ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ๋Š” ๋‘˜ ๋‹ค ๋™์ผํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ApplicationServiceException๊ณผ BusinessException ์ค‘์—์„œ ์„ ํƒํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ ๋ณ€ํ™˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ถˆํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
StackTrace ํด๋ž˜์Šค ์‚ญ์ œ
์˜ˆ์™ธ๋ฅผ ์ƒˆ๋กœ์šด ํŠน์ˆ˜ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์Šคํƒ ์ถ”์ ์ด ์‚ฌ๋ผ์ ธ ์˜ˆ์™ธ์˜ ์‹ค์ œ ์›์ธ์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์•…๋ชฝ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋Š” ์›๋ž˜ ์˜ˆ์™ธ๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์ •๋ณด๋„ ๋ฐ›์ง€ ์•Š๊ณ  ์ƒˆ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. try{ File file = new File(""); file.getCanonicalPath(); }catch(IOException ioe){ throw new MyException("Problem in data reading."); }
์˜ˆ์™ธ ์‚ฌ์œ  ๋ฎ์–ด์“ฐ๊ธฐ
๊ฐ ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€์—๋Š” ์˜ˆ์™ธ ์ด์œ ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ์ƒˆ๋กœ์šด ์˜ˆ์™ธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ด์ „ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒˆ๋กœ์šด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ StackTrace๊ฐ€ ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋Š” ์œ„์˜ ์˜ˆ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
ํŠน์ • ์˜ˆ์™ธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Œ
๋•Œ๋•Œ๋กœ ๊ฐœ๋ฐœ์ž๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์•ˆ์ „ํ•˜๊ฒŒ ํ”Œ๋ ˆ์ดํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์ด๊ฒƒ์ด ์‰ฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŠน์ • ์˜ˆ์™ธ ๋Œ€์‹  java.lang.Exception์„ ํฌ์ฐฉํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. try{ File file = new File(""); file.getCanonicalPath(); }catch(Exception exe){ throw new MyException("Problem in data reading."); }
๋ถˆํ•„์š”ํ•œ ์บ์น˜ ์•ค ๋˜์ง€๊ธฐ
์˜ˆ์™ธ๋ฅผ ๋‹ค๋ฅธ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋˜๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๋‚˜ ๋ถ„์„๊ฐ€์—๊ฒŒ ๋ณด๋‚ด๋Š” ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€์— ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์žก๋Š” ๋Œ€์‹  ๋ฉ”์†Œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜(throw ์‚ฌ์šฉ)์—์„œ ๋” ๋ฉ€๋ฆฌ ๋ฒ„๋ฆฌ์‹ญ์‹œ์˜ค.
๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ ์žก๊ธฐ
RuntimeException์„ ํฌ์ฐฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํŠน์ • ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ ์ฐพ๊ธฐ
ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ• ์ง€ ์—ฌ๋ถ€๋Š” ๋…ผ๋ž€์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋Š” ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. NullPointerException ๋ฐ ArrayIndexOutOfBound๋Š” ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ์˜ ๊ฐ€์žฅ ์ข‹์€ ์˜ˆ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜๋Š” ๋Œ€์‹  ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NullPointerException์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ArrayIndexOutOfBound ์˜ˆ์™ธ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์ด์˜ ๋ฐฐ์—ด์„ ์ •์˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์™ธ ๋กœ๊น…๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ
์žก์ง€๋Š” ๋‘ ๋ฒˆ์งธ ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ, ์ฆ‰ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋กœ๊ทธ ํŒŒ์ผ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์ˆ˜์ค€์—์„œ ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์—๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ˆ˜์ค€์˜ ์˜ˆ์™ธ๊ฐ€ ๊ธฐ๋ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์ค‘์ง€ํ•˜๊ฑฐ๋‚˜ ๊ณ„์†ํ•˜๋ผ๋Š” ์ œ์•ˆ๊ณผ ํ•จ๊ป˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋กœ๊ทธ์— ์˜ˆ์™ธ๋ฅผ ์˜๋ฌด์ ์œผ๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์ตœ์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ๋ฆ„ ์ œ์–ด ์˜ˆ์™ธ
์˜ˆ์™ธ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ํ๋ฆ„์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ด ํ๋ฆ„์„ ์ค‘๋‹จํ•˜๊ณ  ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด์— ๋Œ€ํ•ด ์•Œ๋ ค์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ฒด ์Šค๋ ˆ๋“œ์ธ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์—„์ฒญ๋‚œ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. try{ myObject.getValue(); }catch(NullPointerException npe){ alternateMethod(); }
java.lang.Exception์˜ ์œ ๋น„์ฟผํ„ฐ์Šค ์‚ฌ์šฉ
๋ชจ๋“  ์˜ˆ์™ธ์— ๋Œ€ํ•ด ๋ชจ๋“  ๊ณณ์—์„œ java.lang.Exception์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€์‹ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์˜ˆ์™ธ๋‚˜ ๊ฐ€์žฅ ์ ์ ˆํ•œ ํ‘œ์ค€ Java ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์›๋ณธ ๊ธฐ์‚ฌ: ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜ ๋ฒˆ์—ญ ๋ฐ ์Œ์„ฑ: Ve4niY
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION