๐Ÿ’ป BackEnd/๐ŸŸจ Java

๐ŸŸจ [Java] [์˜ˆ์™ธ ์ฒ˜๋ฆฌ]Checked Exception VS Unchecked Exception

Dbswnstjd 2024. 1. 21. 17:59

์ด์ „์˜ ๊ธ€์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ์ ์ด ์žˆ๋‹ค. ๊ธ€์„ ๋‹ค์‹œ ์ฝ์–ด๋ณด๋‹ค ๋ณด๋‹ˆ Runtime Exception ์— ๋Œ€ํ•ด ์ œ๋Œ€๋กœ ์„œ์ˆ ํ•˜์ง€ ์•Š์•„์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”ํ•œ ๋งŒํผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. 

 

๐Ÿ“Œ 1. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ž€?

์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ž€, ์˜ˆ์™ธ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์„ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ์ƒ์œผ๋กœ ๋ฏธ๋ฆฌ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ

 

๐Ÿ“Œ 2. ์˜ˆ์™ธ (Exception) ์™€ ์—๋Ÿฌ (Error)

โšก ์˜ˆ์™ธ(Exception)๋ž€ ?

์˜ˆ์™ธ๋Š” Checked Exception๊ณผ Unchecked Exception์œผ๋กœ ๋‚˜๋‰œ๋‹ค. Checked Exception์€ Unchecked Exception์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์˜ˆ์™ธ์ด๋‹ค. ์ปดํŒŒ์ผ ์‹œ ์˜ˆ์™ธ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๊ณ  ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋ฐ˜๋ฉด, Unchecked Exception ์€ Runtime Exception๊ณผ ๊ทธ ํ•˜์œ„ ํด๋ž˜์Šค๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ์ปดํŒŒ์ผ ์‹œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

โšก ์—๋Ÿฌ(Error)๋ž€ ?

์—๋Ÿฌ(Error)๋ž€, ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค์ž‘๋™๋˜๊ฑฐ๋‚˜ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์‹ฌ๊ฐํ•œ ์ƒํ™ฉ์˜ ์›์ธ์„ ์—๋Ÿฌ๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ, ๋ฉ”์„œ๋“œ ๋ฌดํ•œ ํ˜ธ์ถœ, ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋˜๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์›์ธ์ด ์—๋Ÿฌ์ด๋‹ค.

๋˜ํ•œ ์ด ์—๋Ÿฌ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ์™€ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. 

  • ์ปดํŒŒ์ผ ์—๋Ÿฌ
    • ์ปดํŒŒ์ผ ์‹œ ๋งž์ถค๋ฒ•, ์„ธ๋ฏธ์ฝœ๋ก  ์ƒ๋žต ๋“ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค์ฝ”๋“œ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜

 

  • ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ
    • ๋Ÿฐํƒ€์ž„ ๋‹จ๊ณ„์—์„œ ๋ฌดํ•œ ๋ฃจํ”„, ๋„ ํฌ์ธํŠธ ์—๋Ÿฌ, ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฐน์กฐ ๋“ฑ ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„ ๋ฏธ์ˆ™์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜

 

๐Ÿ“Œ 3. ์˜ˆ์™ธ ํด๋ž˜์Šค 

์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค. ์—๋Ÿฌ์™€ ์˜ˆ์™ธ๋กœ ๋‚˜๋‰˜๊ณ  ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์€ ๋ชจ๋‘ Throwable ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋Š”๋‹ค. 

์˜ˆ์™ธ/์—๋Ÿฌ

 

๐Ÿ“Œ 4. Checked Exception VS Unchecked Exception

์œ„์˜ ๊ทธ๋ฆผ์—์„œ Exception ํด๋ž˜์Šค๋Š” ์—ฌ๋Ÿฌ ์ž์‹ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํด๋ž˜์Šค๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ด ๋•Œ Checked Exception ๊ณผ Unchecked Exception ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๋‘˜์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ํ•„์ˆ˜ ์—ฌ๋ถ€์ด๋‹ค. 

Checked Exception ์€ ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์ด๊ณ  Unchecked Exception์€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํด๋ž˜์Šค๋“ค์ด๋‹ค.

 

  • Checked Execption
    • Runtime Exception์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์˜ˆ์™ธ ํด๋ž˜์Šค
    • ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์˜ˆ์™ธ ํด๋ž˜์Šค
    • ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ํ™•์ธ๋œ ์˜ˆ์™ธ
    • Ex) IOException, SQLException ๋“ฑ

 

  • Unchecked Exception
    • Runtime Exception ๊ณ„์—ด์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค
    • ์„ ํƒ์ ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋กœ์ง ์˜ค๋ฅ˜๋กœ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋“ค์ด๋ฏ€๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜๊ฐ€ ์•„๋‹˜
    • Ex) NullPointerException, IndexOutOfBoundException