CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์˜ˆ์™ธ: ์„ ํƒ๋จ, ์„ ํƒ๋˜์ง€ ์•Š์Œ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ •
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์˜ˆ์™ธ: ์„ ํƒ๋จ, ์„ ํƒ๋˜์ง€ ์•Š์Œ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ •

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

์˜ˆ์™ธ ์œ ํ˜•

์ด์ „์— ๋งํ–ˆ๋“ฏ์ด Java์—๋Š” ๊ฑฐ์˜ 400๊ฐœ์— ๊ฐ€๊นŒ์šด ๋งŽ์€ ์˜ˆ์™ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์–ด์„œ ๊ธฐ์–ตํ•˜๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ˆ์™ธ ๋Š” ํด๋ž˜์Šค ์˜ˆ์™ธ: ์„ ํƒ๋จ, ์„ ํƒ๋˜์ง€ ์•Š์Œ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • - 2 ์—์„œ ๊ณตํ†ต ์กฐ์ƒ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค Throwable. ์—ฌ๊ธฐ์—์„œ ์˜ˆ์™ธ( Exception ) ๋ฐ ์˜ค๋ฅ˜( Error )๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๊ทธ๋ฃน์ด ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ - JVM(Java Virtual Machine) ์ž‘๋™๊ณผ ๊ด€๋ จ๋œ ์‹ฌ๊ฐํ•œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋Š” ์ฝ”๋“œ์— ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ์ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ฒƒ์€ StackOverflowError (์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์„œ๋“œ๊ฐ€ ๋์—†์ด ์ž์‹ ์„ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœ์ƒ) ๋ฐ OutOfMemoryError ์ž…๋‹ˆ๋‹ค.(๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.) ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋Ÿฐํƒ€์ž„์— ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํžˆ ์ž˜๋ชป ์ž‘์„ฑ๋˜์–ด ์žฌ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ - ์ด๊ฒƒ์€ ์˜ˆ์™ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ ์ด๊ณ  ๊ณ„ํš๋˜์ง€ ์•Š์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋งŒํผ ์‹ฌ๊ฐํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ˆ์™ธ๋Š” 2๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค: checked ๋ฐ unchecked . ์˜ˆ์™ธ: ์„ ํƒ๋จ, ์„ ํƒ๋˜์ง€ ์•Š์Œ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • - 3 ๋ชจ๋“  ํ™•์ธ๋œ ์˜ˆ์™ธ๋Š” ํด๋ž˜์Šค์—์„œ ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค Exception. "checked"์€(๋Š”) ๋ฌด์Šจ ๋œป์ธ๊ฐ€์š”? ์ง€๋‚œ ์ˆ˜์—…์—์„œ ์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. "๋”ฐ๋ผ์„œ Java ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์˜ˆ์™ธ์™€ ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ”๋“œ๊ฐ€ ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด ํŒŒ์ผ์ด ์‰ฝ๊ฒŒ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ(์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Œ)์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋Ÿฌํ•œ ์ž ์žฌ์  ์˜ˆ์™ธ๊ฐ€ ์žˆ๋Š”์ง€ ๋ฏธ๋ฆฌ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ์ฐพ์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ๋˜์งˆ ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์˜ˆ์™ธ ์œ ํ˜•์€ "ํ™•์ธ๋˜์ง€ ์•Š์Œ"์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์—์„œ ํŒŒ์ƒ๋ฉ๋‹ˆ๋‹ค RuntimeException. ํ™•์ธ๋œ ์˜ˆ์™ธ์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๊นŒ? ์—์„œ ํŒŒ์ƒ๋œ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋„ ๋งŽ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.RuntimeException(๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋ฅผ ์„ค๋ช…ํ•จ). ์ฐจ์ด์ ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ์˜ˆ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. "์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์˜์‹ฌ์Šค๋Ÿฌ์šด ์ ์„ ์ฐพ์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์ฝ”๋“œ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!" ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋Š” ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค๋ฅ˜์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ถ„๋ช…ํžˆ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์†์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๋‚˜์œ ์ƒํ™ฉ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. :) ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๊ฐ€ ์šฐ๋ฆฌ ์ฝ”๋“œ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™•์ธ๋˜์ง€ ์•Š์€ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์™ธ๊ฐ€ ์ด๋ฏธ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ArithmeticException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด ์™ธ๋ถ€ ์œ„์น˜์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•˜๋ฉด ArrayIndexOutOfBoundsException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋ฌผ๋ก  Java ์ž‘์„ฑ์ž๊ฐ€ ํ•„์ˆ˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋„์ž…ํ–ˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. try-catch๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ ์‹ค์ˆ˜๋กœ 0์œผ๋กœ ๋‚˜๋ˆ„์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ก์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ ? try-catch๋ฐฐ์—ด์— ์•ก์„ธ์Šคํ•  ๋•Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ก์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ๋ชจ๋“  ๊ฒƒ์ด ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ์ผ ๊ฒƒ์ด๊ณ  ์™„์ „ํžˆ ์ฝ์„ ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์•„์ด๋””์–ด๊ฐ€ ๋ฒ„๋ ค์กŒ๋‹ค๋Š” ๊ฒƒ์€ ์ด์น˜์— ๋งž์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋Š” ๋ธ”๋ก์—์„œ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ throwํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค try-catch(Error์™€ ๊ฐ™์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ).

์ž์‹ ์˜ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๋ฐฉ๋ฒ•

๋ฌผ๋ก  Java ์ œ์ž‘์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์„ ์˜ˆ์ธกํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์„ธ์ƒ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๊ณ  ๋„ˆ๋ฌด ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ณ ์œ ํ•œ ์˜ˆ์™ธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฑฑ์ •ํ•  ์‚ฌํ•ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ž์‹ ๋งŒ์˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์ด "Exception"์œผ๋กœ ๋๋‚˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์—๋Š” ์ด๊ฒƒ์ด ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์˜ˆ์™ธ ํด๋ž˜์Šค์ž„์„ ์ฆ‰์‹œ ์ดํ•ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋ž˜์Šค๊ฐ€ Exceptionํด๋ž˜์Šค์—์„œ ์ƒ์†๋จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค(์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ด๋ฅผ ์š”๊ตฌํ•จ). ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค Dog. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฅผ ์‚ฐ์ฑ…์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.walk()๋ฐฉ๋ฒ•. ํ•˜์ง€๋งŒ ๊ทธ ์ „์— ์šฐ๋ฆฌ๋Š” ์• ์™„๋™๋ฌผ์ด ๋ชฉ์ค„, ๋ชฉ์ค„, ์ž…๋งˆ๊ฐœ๋ฅผ ์ฐฉ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์žฅ๋น„ ์ค‘ ๋ˆ„๋ฝ๋œ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค: DogIsNotReadyException . ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

public class DogIsNotReadyException extends Exception {

   public DogIsNotReadyException(String message) {
       super(message);
   }
}
ํด๋ž˜์Šค๊ฐ€ ์˜ˆ์™ธ์ž„์„ ํ‘œ์‹œํ•˜๋ ค๋ฉด ํด๋ž˜์Šค ์ด๋ฆ„ ๋’ค์— " extends Exception " ์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์ด๋Š” "ํด๋ž˜์Šค๊ฐ€ Exception ํด๋ž˜์Šค์—์„œ ํŒŒ์ƒ๋จ"์„ ์˜๋ฏธํ•จ). ์ƒ์„ฑ์ž์—์„œ ExceptionString ๋ฉ”์‹œ์ง€ ๋กœ ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค(์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์„ค๋ช… ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•จ). ํด๋ž˜์Šค ์ฝ”๋“œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

public class Dog {

   String name;
   boolean isCollarPutOn;
   boolean isLeashPutOn;
   boolean isMuzzlePutOn;


   public Dog(String name) {
       this.name = name;
   }

   public static void main(String[] args) {

   }

   public void putCollar() {

       System.out.println("The collar is on!");
       this.isCollarPutOn = true;
   }

   public void putLeash() {

       System.out.println("The leash is on!");
       this.isLeashPutOn = true;
   }

   public void putMuzzle() {
       System.out.println("The muzzle is on!");
       this.isMuzzlePutOn = true;
   }

   public void walk() throws DogIsNotReadyException {

   System.out.println("We're getting ready for a walk!");
   if (isCollarPutOn && isLeashPutOn && isMuzzlePutOn) {
       System.out.println("Hooray, let's go for a walk! " + name + " is very happy!");
   } else {
       throw new DogIsNotReadyException(name + " is not ready for a walk! Check the gear!");
   }
 }

}
์ด์ œ ์šฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” DogIsNotReadyExceptionwalk() ์„ ๋˜์ง‘๋‹ˆ๋‹ค . ์ด๊ฒƒ์€ throw ํ‚ค์›Œ๋“œ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์•ž์—์„œ ๋งํ–ˆ๋“ฏ์ด ์˜ˆ์™ธ๋Š” ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ ๋ฉ”์„œ๋“œ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด(๊ฐœ๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Œ) ํ‚ค์›Œ๋“œ throw๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๋˜์ง‘๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ์„ ์–ธ์— " throws DogIsNotReadyException "์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค . ์ฆ‰, ์ด์ œ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์ด ๋  ์ˆ˜ ์žˆ์Œ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ ์–ด๋”˜๊ฐ€์—์„œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ์—์„œ ์ด๊ฒƒ์„ ํ•ด๋ณด์ž : DogIsNotReadyExceptionwalk()main()

public static void main(String[] args) {
  
   Dog dog = new Dog("Buddy");
   dog.putCollar();
   dog.putMuzzle();
   dog.walk();// Unhandled exception: DogIsNotReadyException
}
์ด๊ฒƒ์€ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์™ธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! try-catch์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ๋ธ”๋ก์œผ๋กœ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค .

public static void main(String[] args) {

   Dog dog = new Dog("Buddy");
   dog.putCollar();
   dog.putMuzzle();
   try {
       dog.walk();
   } catch (DogIsNotReadyException e) {
       System.out.println(e.getMessage());
       System.out.println("Checking the gear! Is the collar on? " + dog.isCollarPutOn + "\r\n Is the leash on? "
       + dog.isLeashPutOn + "\r\n Is the muzzle on? " + dog.isMuzzlePutOn);
   }
}
์ด์ œ ์ฝ˜์†” ์ถœ๋ ฅ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. The collar is on! ์ด๊ตฌ๊ฐ€ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์‚ฐ์ฑ…์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๋ฒ„๋””๋Š” ์‚ฐ์ฑ…ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๊ธฐ์–ด๋ฅผ ํ™•์ธํ•˜์„ธ์š”! ๊ธฐ์–ด ํ™•์ธ! ์นผ๋ผ๊ฐ€ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ€์ฃฝ ๋ˆ์ด ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๊นŒ? false ์ด๊ตฌ๊ฐ€ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๊นŒ? true ์ฝ˜์†” ์ถœ๋ ฅ์ด ์–ผ๋งˆ๋‚˜ ๋” ์œ ์ตํ•œ์ง€ ๋ณด์‹ญ์‹œ์˜ค! ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ๋ด…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ณ  ์šฐ๋ฆฌ ๊ฐ•์•„์ง€๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ๋Š”์ง€ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :) ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ž์‹ ๋งŒ์˜ ์˜ˆ์™ธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ณต์žกํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Java์˜ ์ œ์ž‘์ž๊ฐ€ ์žฅ๋น„๊ฐ€ ๋ถ€์กฑํ•œ ๊ฐœ์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ์˜ˆ์™ธ๋ฅผ ์–ธ์–ด์— ํฌํ•จํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์˜ ๊ฐ๋…์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. :)

๋” ์ฝ์–ด๋ณด๊ธฐ:

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION