[JAVA] try catch(์˜ˆ์™ธ์ฒ˜๋ฆฌ)


Contents




Exception (์˜ˆ์™ธ)

์˜ˆ์™ธ๋ž€ ์‚ฌ์šฉ์ž์˜ ์ž˜๋ชป๋œ ์กฐ์ž‘ ๋˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ž˜๋ชจ์†Œ๋”˜ ์ฝ”๋”ฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜์ด๋‹ค.

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Java์—์„œ๋Š” try catch๋ฌธ์„ ํ†ตํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.

์˜ˆ์™ธ๋Š” Checked Exception, Unchecked Exception์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

Checked Exception ์ฒดํฌ ์˜ˆ์™ธ

RuntimeException์˜ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ฉด์„œ Exception ํด๋ž˜์Šค์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋“ค์ด๋‹ค.

์ฒดํฌ ์˜ˆ์™ธ๋Š” ๋ฐ˜๋“œ์‹œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ(try catch๋ฌธ ๋˜๋Š” throw)๋ฅผ ํ•ด์•ผํ•˜๋Š” ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

throws๋ฅผ ๋ถ™์—ฌ์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. throws๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ try catch๋ฌธ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.


Unchecked Exception ์–ธ์ฒดํฌ ์˜ˆ์™ธ

RuntimeException์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋“ค์„ ์˜๋ฏธํ•œ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ฒดํฌ ์˜ˆ์™ธ์™€ ๋‹ฌ๋ฆฌ ์—๋Ÿฌ ์ฒ˜๋ฆฌ(try catch)๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, try catch๋กœ ์˜ˆ์™ธ๋ฅผ ์žก๊ฑฐ๋‚˜ throw๋กœ ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ์—๊ฒŒ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€์ง€ ์•Š๋Š”๋‹ค.


์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ˆ์™ธ๋“ค

Exception๋ฐœ์ƒ ์ด์œ 
ArithmeticException์ •์ˆ˜๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆŒ๊ฒฝ์šฐ ๋ฐœ์ƒ
ArrayIndexOutOfBoundsExcetion๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ index๋ฅผ ์ ‘๊ทผํ•  ์‹œ ๋ฐœ์ƒ
ClassCastExcetion๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ํƒ€์ž…์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ ์‹œ ๋ฐœ์ƒ
NullPointException์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์กฐํ• ๋•Œ ๋ฐœ์ƒ
IllegalArgumentException์ž˜๋ชป๋œ ์ธ์ž๋ฅผ ์ „๋‹ฌ ํ•  ๋•Œ ๋ฐœ์ƒ
IOException์ž…์ถœ๋ ฅ ๋™์ž‘ ์‹คํŒจ ๋˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์‹œ ๋ฐœ์ƒย 
OutOfMemoryException๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒ
NumberFormatException๋ฌธ์ž์—ด์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ํƒ€์ž…์˜ ์ˆซ์ž๋กœ ๋ณ€ํ™˜์‹œ ๋ฐœ์ƒ



try catch๋ฌธ (์˜ˆ์™ธ์ฒ˜๋ฆฌ)

๊ธฐ๋ณธ ๊ตฌ์„ฑ

  • try {} : ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ๋˜๋Š” ์˜์—ญ
  • catch(e) {} : ๋ฐœ์ƒ๋˜๋Š” ์˜ˆ์™ธ๋ฅผ ์žก์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜์—ญ
    • ๋ชจ๋“  ์˜ˆ์™ธ์˜ ๋ถ€๋ชจ๋Š” Exception์ด๊ธฐ ๋•Œ๋ฌธ์— ๋”ฑํžˆ ์ฒ˜๋ฆฌํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์˜ˆ์™ธ๋ฅผ ์žก์•„์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ๋งˆ์ง€๋ง‰ catch์— Exception e๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ
      • e.getMessage() : ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ ๋ฉ”์„ธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ. ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋งŒ ์•Œ ์ˆ˜ ์žˆ์–ด์„œ ์ƒ์„ธํ•˜์ง€ ์•Š๋‹ค.
      • e.printStackTrace() : ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ ํด๋ž˜์Šค์˜ ๊ฐ€์žฅ ์ž์„ธํ•œ ์˜ˆ์™ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • finally {} : ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„ ์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋˜๋Š” ์˜์—ญ
    • ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ž์›์„ ํ•ด์ œํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    • catch ๋’ค์— ๋ถ™์ด๊ฑฐ๋‚˜ try ๋’ค์— ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.
try {
    // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ๋˜๋Š” ์˜์—ญ
} catch (Exception e) {
    // ๋ฐœ์ƒ๋œ ์˜ˆ์™ธ๋ฅผ ์žก์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜์—ญ
    System.out.println(e.getMessage()); // ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์˜ ๊ธฐ๋ณธ ์ •๋ณด ์ถœ๋ ฅ
    e.printStackTrace(); // ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์˜ ์ž์„ธํ•œ ์ •๋ณด ์ถœ๋ ฅ
} finally {
    // ์˜ˆ์™ธ ๋ฐœ์ƒ๊ณผ ๊ด€๊ณ„ ์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰
}



๋‹ค๋ฅธ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• : throw, throws

  • throw : ์˜ˆ์™ธ ๊ฐ์ฒด๋ฅผ ๊ณ ์˜๋กœ ๋ฐœ์ƒ์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์–ต์ง€๋กœ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๋•Œ๋„ ์‚ฌ์šฉ๋˜์ง€๋งŒ ํ˜„์žฌ ๋ฉ”์†Œ๋“œ์˜ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„์— ์ƒ์œ„ ๋ฉ”์†Œ๋“œ์— ์—๋Ÿฌ ์ •๋ณด๋ฅผ ์คŒ์œผ๋กœ ์ƒ์œ„ ๋ฉ”์†Œ๋“œ์—์„œ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒˆ์•Ÿใ„ด ๊ฒƒ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • throws : ๋ฉ”์„œ๋“œ์—์„œ ๋ฐœ์ƒ๋˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ์ƒ์œ„ ๋ฉ”์†Œ๋“œ๋กœ ์˜ˆ์™ธ๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.(์˜ˆ์™ธ๋ฅผ ์ „๊ฐ€ํ•œ๋‹ค.)
    • ์ƒ์œ„ ๋ฉ”์„œ๋“œ์—์„œ try catch๋ฌธ์„ ํ†ตํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ
if (x == null) {
    throw new NullPointerException();
}





ยฉ 2022. by Yejin Ha

Powered by JihyunRyu