[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] Item02 ์™„๋ฒฝ๊ณต๋žต. IllegalArgumentException

2023. 1. 9. 10:15ใ†JAVA/Effective JAVA

728x90
item02. ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ. 

" p19. IllegalArgumentException"

 

 

IllegalArgumentException ๋ž€? 

: ์ ํ•ฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ ์ ˆํ•˜์ง€ ๋ชปํ•œ ์ธ์ž๋ฅผ ๋ฉ”์„œ๋“œ์— ๋„˜๊ฒจ์ฃผ์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๋‹ค. 

์ฆ‰, ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ญ”๊ฐ€ ์ž˜๋ชป๋œ ๊ฐ’์ด ๋„˜์–ด์™”์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ž˜ ์ „๋‹ฌ๋œ๊ฑด์ง€ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค. 

๋ณดํ†ต์€ ๊ฑฐ์˜ ์—๋Ÿฌ ๋กœ๊ทธ๋งŒ ์ž˜ ํ™•์ธํ•ด๋„ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ด๋ ‡๊ฒŒ ๋ฐฐ์†ก์ผ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. 

์ด๋•Œ, deliveryDate๊ฐ€ ํ˜„์žฌ๋ณด๋‹ค ์ „์ด๋ผ๋ฉด ๋ฐฐ์†ก์„ ๊ณผ๊ฑฐ๋กœ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— IllegalArgumnetException์„ ํ†ตํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ž˜๋ชป๋๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. 

์—๋Ÿฌ๋ฅผ ๋˜์งˆ ๋•Œ๋Š” ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ ์—๋Ÿฌ๋งŒ ๋˜์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋„ ํ•จ๊ป˜ ๋‚จ๊ฒจ์„œ ์–ด๋””์„œ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

 

 

Checked Exception๊ณผ unChecked Exception์˜ ์ฐจ์ด์ ์€?

: checked Exception์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ ์˜ˆ์™ธ๋ฅผ ๋‹ค์‹œ throw ํ•˜๊ฑฐ๋‚˜ try-catch๋ฅผ ํ†ตํ•ด์„œ ์žก์•„์•ผ ํ•œ๋‹ค. 

๋˜ํ•œ checked Exception๋Š” ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์—์„œ ๋˜์ง€๋Š” ์˜ˆ์™ธ์ด๋‹ค. 

๋ฐ˜๋ฉด unchecked Exeption์˜ ๊ฒฝ์šฐ์—๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ด ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค. ์ฆ‰,  ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•„์ˆ˜๋กœ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 

 

 

 

๊ฐ„ํ˜น ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์— unchecked Exception์„ ์„ ์–ธํ•˜๋Š” ์ด์œ ๋Š”?

: ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์ฃผ๋กœ ์„ ์–ธํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

(์ด ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ž˜๋ชป๋œ ๊ฐ’์ด ๋„˜์–ด์˜ค๋ฉด ์ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค~ ์ด๋Ÿฐ์‹์œผ๋กœ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ) 

 

๊ทผ๋ฐ unchecked Exception์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ๋งŽ์„ ์ˆ˜๋„ ์žˆ๊ณ , ,,, ๊ทธ๋Ÿฌ๋ฉด ๊ฐ€๋…์„œ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์—๋Š” checked Exception ์„ ์„ ์–ธํ•œ๋‹ค.

ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ — ๋…ผ์Ÿ (์ž๋ฐ”™ ํŠœํ† ๋ฆฌ์–ผ > ํ•„์ˆ˜ Java ํด๋ž˜์Šค > ์˜ˆ์™ธ) (oracle.com)

 

Unchecked Exceptions — The Controversy (The Java™ Tutorials > Essential Java Classes > Exceptions)

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated

docs.oracle.com

 

 

checked Exception์€ ์™œ ์‚ฌ์šฉํ• ๊นŒ? 

: ์ด ์—๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด์— ๋Œ€ํ•œ ํ›„์† ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. 

 

 

 

Runtime Exception ํด๋ž˜์Šค 

RuntimeException (Java SE 11 & JDK 11 ) (oracle.com)

 

RuntimeException (Java SE 11 & JDK 11 )

 

docs.oracle.com

 

 

 

If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.

 

 

 

 

 

 

 

728x90