/////
Search
โš ๏ธ

์˜ˆ์™ธ ์ฒ˜๋ฆฌ

Java ์˜ˆ์™ธ

โ€ข
์ผ๋ฐ˜ ์˜ˆ์™ธ(Exception)๊ณผ ์‹คํ–‰ ์˜ˆ์™ธ(RuntimeException)์œผ๋กœ ๋‚˜๋‰œ๋‹ค.
โ€ข
์ตœ์ƒ์œ„ exception class๋Š” java.lang.Exception์ด๋‹ค.
โ€ข
JVM์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋„์ค‘์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์˜ˆ์™ธ ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
โ€ข
์ผ๋ฐ˜ ์˜ˆ์™ธ๋Š” Exception์„ ์ƒ์†๋ฐ›์ง€๋งŒ Runtime Exception์€ ์ƒ์†๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
โ—ฆ
Runtime Exception๋„ Exception์„ ์ƒ์† ๋ฐ›๋Š”๋‹ค.

Runtime Exception ์ข…๋ฅ˜

NullPointerException
โ€ข
java.lang.NullPointerException
โ€ข
๊ฐ์ฒด ์ฐธ์กฐ๊ฐ€ ์—†๋Š” ์ƒํƒœ, ์ฆ‰ null ๊ฐ’์„ ๊ฐ–๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด ์ ‘๊ทผ ์—ฐ์‚ฐ์ž์ธ ๋„ํŠธ(.)๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.
ArrayIndexOutOfBoundsException
โ€ข
java.lang.ArrayIndexOutOfBoundsException
โ€ข
๋ฐฐ์—ด์—์„œ ์ธ๋ฑ์Šค ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ
NumberFormatException
โ€ข
java.lang.NumberFormatException
โ€ข
Wrapperํด๋ž˜์Šค์—์„œ paresXXX ๋ฉ”์†Œ๋“œ๋กœ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜๋ฉด ๋ฐœ์ƒ
ClassCastException
โ€ข
java.lang.ClassCastException
โ€ข
์–ต์ง€๋กœ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒ

์ผ๋ฐ˜ ์˜ˆ์™ธ

โ€ข
์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐœ๋ฐœ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ํ•œ๋‹ค.

์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ

try-catch-finally
โ€ข
try ๋ธ”๋ก๊ณผ catch ๋ธ”๋ก์—์„œ return๋ฌธ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ finally ๋ธ”๋ก์€ ์‹คํ–‰๋œ๋‹ค.
โ€ข
๋‹ค์ค‘ catch๋ฅผ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ catch๋งŒ ์‹คํ–‰๋œ๋‹ค.
โ€ข
catch๋ธ”๋ก ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ƒ์œ„ ์˜ˆ์™ธ ํƒ€์ž…์ด ์œ„์— ์žˆ์œผ๋ฉด ์•„๋ž˜ ์žˆ๋Š” ํ•˜์œ„ ์˜ˆ์™ธํƒ€์ž…์€ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฃผ์˜
โ€ข
๋ฉ€ํ‹ฐ catch๋Š” catch(์˜ˆ์™ธ | ์˜ˆ์™ธ) ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ ์˜ˆ์™ธ ํ•œ ๋ฒˆ์— ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ
try-with-resource
try(FileInputStream fis = new FileInputStream("file.txt") FileOutputStream fos = new FileOutputStream("file2.txt")){ } catch(IOException e) { }
Java
๋ณต์‚ฌ
โ€ข
try๋ฌธ์ด ์ •์ƒ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ซ๊ณ  catch ๋ธ”๋ก์„ ํ˜ธ์ถœํ•œ๋‹ค.
โ€ข
์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
๋ฆฌ์†Œ์Šค ๊ฐ์ฒด๊ฐ€ java.lang.AutoClosable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
โ€ข
์‚ฌ์šฉํ•˜๋Š”์ด์œ 
โ—ฆ
finally๊ตฌ๋ฌธ์˜ close๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด try ์—๋Ÿฌ๋ฅผ ๋ณผ ์ˆ˜๊ฐ€ ์—†๋Š”๋ฐ try-with-resource๋Š” close ๊ฐ™์€ ๋ถ€์ฐจ์ ์ธ ์˜ˆ์™ธ๋ฅผ ์ž๋™์œผ๋กœ ์–ต์ œํ•ด ์ค€๋‹ค. ๋”ฐ๋ผ์„œ ์ง„์งœ ๋ณด๊ณ ์ž ํ•˜๋Š” try์˜ˆ์™ธ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์ž์›์„ ํ™•์‹คํ•˜๊ฒŒ ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
โ—ฆ
์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ

์ •์˜
โ€ข
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค์™€ ๊ด€๋ จ๋œ ์˜ˆ์™ธ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์™ธ(Application Exception)์ด๋ผ๊ณ  ํ•œ๋‹ค.
์„ ์–ธ
โ€ข
๋Œ€๋ถ€๋ถ„ ์ƒ์„ฑ์ž ์„ ์–ธ๋งŒ์„ ํฌํ•จํ•œ๋‹ค.
โ€ข
์ƒ์„ฑ์ž ๋‘ ๊ฐœ๊ฐ€ ์ผ๋ฐ˜์ 
โ€ข
๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž์™€ String ํƒ€์ž…์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š” ์ƒ์„ฑ์ž์ด๋‹ค.
โ€ข
String ํƒ€์ž…์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š” ์ƒ์„ฑ์ž๋Š” ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋„˜๊ฒจ ์ค€๋‹ค.

์˜ˆ์™ธ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ

โ€ข
throw new XXXException();
โ€ข
throws new XXXException(๋ฉ”์‹œ์ง€);
โ€ข
๋Œ€๋ถ€๋ถ„ throws๋กœ ์ž์‹ ์„ ํ˜ธ์ถœํ•œ ๊ณณ์— ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค.

์˜ˆ์™ธ ์ •๋ณด ์–ป๊ธฐ

โ€ข
catch๋ฌธ์—์„œ ์‚ฌ์šฉ
โ€ข
e.getMessage()
โ€ข
e.printStackTrace()