[Java] Error์™€ Exception

giggleยท2023๋…„ 9์›” 2์ผ
0

๐Ÿ“Œ Throwable๋ž€?

Error์™€ Exception ๋ชจ๋‘ ์ž๋ฐ”์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์ธ Throwable๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  Error์™€ Exception ํด๋ž˜์Šค๋Š” Throwable ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ ์žˆ์œผ๋ฉฐ, getMessage()์™€ printStackTrace() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ Error์™€ Exception ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” Error์˜ ์ƒํ™ฉ์„ ๋ฏธ๋ฆฌ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ Exception ์ƒํ™ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, java์—์„œ๋Š” try-catch๋ฌธ์œผ๋กœ Exception handling์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Error๋ž€?

Error๋Š” ์‹œ์Šคํ…œ์ด ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•  ์ˆ˜์ค€์˜ ์ƒํ™ฉ๊ณผ ๊ฐ™์ด ์ˆ˜์Šตํ•  ์ˆ˜ ์—†๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜์—ฌ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • StackOverflowError : ํ˜ธ์ถœ์˜ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ง€๊ฑฐ๋‚˜ ์žฌ๊ท€๊ฐ€ ์ง€์†๋˜์–ด stack overflow ๋ฐœ์ƒ ์‹œ ๋˜์ ธ์ง€๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

  • OutOfMemoryError : JVM์ด ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ถ€์กฑ์œผ๋กœ ๋” ์ด์ƒ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋˜์ ธ์ง€๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. Garbage Collector์— ์˜ํ•ด ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ™•๋ณด๋˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

    • Garbage Collector์— ์˜ํ•ด ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ™•๋ณด๋˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ผ ๋•Œ
    • heap ์‚ฌ์ด์ฆˆ ๋ถ€์กฑ
    • ๋„ˆ๋ฌด ๋งŽ์€ class๋ฅผ ๋กœ๋“œํ•  ๋•Œ
    • ๊ฐ€์šฉ๊ฐ€๋Šฅํ•œ swap์ด ์—†์„ ๋•Œ
    • ํฐ ๋ฉ”๋ชจ๋ฆฌ์˜ native๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ
    • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, dumpํŒŒ์ผ๋ถ„์„, jvm ์˜ต์…˜ ์ˆ˜์ • ๋“ฑ์ด ์žˆ๋‹ค.

๐Ÿ“Œ Exception์ด๋ž€?

Exception์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•œ ๋กœ์ง์—์„œ ๋ฐœ์ƒํ•œ ์‹ค์ˆ˜๋‚˜ ์‚ฌ์šฉ์ž์˜ ์˜ํ–ฅ์— ์˜ํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Error์™€ ๋‹ฌ๋ฆฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜์—ฌ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ƒํ™ฉ์— ๋งž๋Š” Exception Handling์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Exception์˜ 2๊ฐ€์ง€ ์ข…๋ฅ˜

  1. Checked Exception : ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ด๋ฉฐ, ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. JVM ์™ธ๋ถ€์™€ ํ†ต์‹ (๋„คํŠธ์›Œํฌ, ํŒŒ์ผ์‹œ์Šคํ…œ ๋“ฑ)ํ•  ๋•Œ ์ฃผ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.
  • RuntimeException ์ด์™ธ์— ์žˆ๋Š” ๋ชจ๋“  ์˜ˆ์™ธ
  • IOException, SQLException ๋“ฑ
  1. Unchecked Exception : ์ปดํŒŒ์ผ ๋•Œ ์ฒดํฌ๋˜์ง€ ์•Š๊ณ , Runtime์— ๋ฐœ์ƒํ•˜๋Š” Exception์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • RuntimeException ํ•˜์œ„์˜ ๋ชจ๋“  ์˜ˆ์™ธ
  • NullPointerException, IndexOutOfBoundException ๋“ฑ

Exception ํด๋ž˜์Šค

  • NullPointerException : Null ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์กฐํ• ๋•Œ ๋ฐœ์ƒ, ๋ญ”๊ฐ€ ๋™์ž‘์‹œํ‚ฌ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • IndexOutOfBoundsException : ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ(๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ์ž๋ฃŒ๊ตฌ์กฐ)์—์„œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ ์‚ฌ์šฉ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • FormatException : ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋‚ ์งœ ๋ณ€ํ™˜ ์‹œ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ(ex. "123A" -> 123 ์œผ๋กœ ๋ณ€ํ™˜ ์‹œ)๋กœ ๋ฐœ์ƒํ•˜๋ฉฐ, ๋ณดํ†ต ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ, ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™˜ ์ฒ˜๋ฆฌ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ArthmeticException : ์ •์ˆ˜๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆŒ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ClassCastException : ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ํƒ€์ž…์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • IllegalArgumentException : ์ž˜๋ชป๋œ ์ธ์ž ์ „๋‹ฌ ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • IOException : ์ž…์ถœ๋ ฅ ๋™์ž‘ ์‹คํŒจ ๋˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • IllegalStateException : ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋งค์†Œ๋“œ ํ˜ธ์ถœ์—๋Š” ๋ถ€์ ์ ˆํ•œ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ConcurrentModificationException : ๊ธˆ์ง€๋œ ๊ณณ์—์„œ ๊ฐ์ฒด๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•˜๋Š”๊ฒƒ์ด ๊ฐ์ง€๋  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • UnsupportedOperationException : ๊ฐ์ฒด๊ฐ€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Exception Handling

Java์—์„œ ๋ชจ๋“  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด (XXX)Exception ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ง์ ‘ try-catch๋ฅผ ์ด์šฉํ•ด์„œ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์ตœ์ข…์ ์ธ ์ฑ…์ž„์„ ์ง€๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
  2. throws Exception์„ ์ด์šฉํ•ด์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์˜ ์ฑ…์ž„์„ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์ด ์ฑ…์ž„์ง€๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹ (์ฃผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์— ์˜ˆ์™ธ๋ฅผ ๋ณด๊ณ ํ•  ๋•Œ ์‚ฌ์šฉํ•จ)

๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ์—” ๋˜์ง€๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค..


์ฐธ๊ณ 


ํ”ผ๋“œ๋ฐฑ ๋ฐ ๊ฐœ์„ ์ ์€ ๋Œ“๊ธ€์„ ํ†ตํ•ด ์•Œ๋ ค์ฃผ์„ธ์š”๐Ÿ˜Š

profile
๋ฐฐ์›€์„ ๊ธ€๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€