[Java] ์˜ˆ์™ธ ( Exception )

2024. 4. 26. 11:46ยทโ˜•Java/๐Ÿ“Java Programming

๋ชฉ์ฐจ

   โ—  1. Error & Exception.

   โ—  2. ์˜ˆ์™ธ(Exception)

   โ—  3. ์˜ˆ์™ธ์ฒ˜๋ฆฌ(1) try & catch

   โ—  4. ์˜ˆ์™ธ์ฒ˜๋ฆฌ(2) try & catch

   โ—  5. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ catch๋ฌธ ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ

   โ—  6. ์˜ˆ์™ธ ์ข…๋ฅ˜( CheckedException & UnCheckedException )

   โ—  7. final๊ตฌ๋ฌธ

   โ—  8. throws๊ตฌ๋ฌธ

 

1. Error & Exception

์ž๋ฐ”์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ํฌ๊ฒŒ Error, Exception ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„์„ ํ•œ๋‹ค.

 

1. Error

๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ( ๋ฉ”๋ชจ๋ฆฌ, ์šด์˜์ฒด์ œ, ํ•˜๋“œ์›จ์–ด, ์™ธ๋ถ€์ ์ธ ์š”์ธ์œผ๋กœ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ )

์ฆ‰, ์ž‘์—…์„ ํ•˜๋Š” ํ™˜๊ฒฝ์˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์ƒ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

2. Exception

๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.( ํ”„๋กœ๊ทธ๋žจ์ƒ ์ฝ”๋“œ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ Exception(์˜ˆ์™ธ)๋ผ๊ณ ํ•œ๋‹ค. )

์‰ฝ๊ฒŒ ๋งํ•ด ์ž๋ฐ”๋กœ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๊ฐ€ ์˜๋„ํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ์ƒํ™ฉ์— ์ง๋ฉดํ–ˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋ฅผ ์˜ˆ์™ธ๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ ) File์„ ์ฝ์–ด์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์งฐ๋Š”๋ฐ ํ•ด๋‹น ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๊ฑฐ๋‚˜, ์˜ˆ์ƒ๋ชปํ•œ ๊ฐ’์„ ์™ธ๋ถ€์—์„œ ์ž…๋ ฅ ๋ฐ›์„๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ

์ด๋Ÿฌํ•œ ์˜ˆ์ƒ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ํ„ฐ์กŒ์„ ๋•Œ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด ์ž๋ฐ”์—์„œ Exception ์ž…๋‹ˆ๋‹ค.

 

2. ์˜ˆ์™ธ(Exception)

// ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๋ฉด์„œ ๋Œ€ํ‘œ์ ์ธ ์ฝ”๋“œ๋กœ ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
public static void main(String[] args) {
	System.out.println(2/0); // ๊ฒฐ๊ณผ : ArithmeticException( ์ˆซ์ž๊ด€๋ จ ์˜ˆ์™ธ )
    // ์ž๋ฐ”์—์„œ๋Š” 0์„ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.(์˜ค๋ฅ˜)
}
// ํ•ด๋‹น ์˜ค๋ฅ˜์˜ ๊ฒฐ๊ณผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ˜์†”์— ์ฐํžˆ๊ฒŒ ๋œ๋‹ค.
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at xxx.xxxx.xxxxxxxx.main(ExceptionApp.java:2)

 

์ฝ”๋“œ์˜ ์˜ˆ์‹œ์—์„œ ์ฝ˜์†”์˜ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด  java.lang.ArithmeticException์™€ ๊ฐ™์ด ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ์˜ ํด๋ž˜์Šค์˜

๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ช…์‹œ๋ฅผ ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ์ด ์ฒ˜๋Ÿผ ์ฝ˜์†”์— ์ฐํžˆ๋Š” ๋ชจ๋“  ์˜ˆ์™ธ(์˜ค๋ฅ˜)์ž์ฒด๋„ ์ž๋ฐ”์—์„œ ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค

์ฆ‰, JRE์— ํฌํ•จ๋œ ๋‚ด์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ์ด๋‹ค.

์ด๋Ÿฌํ•œ ์˜ˆ์™ธ ํด๋ž˜์Šค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ™•์žฅํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

3. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ( 1 )

์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” ์ž๋ฐ”์—์„œ ๋งŒ๋“ค์–ด์ง„ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ƒ ์ค‘๋‹จ์ด ๋ผ๊ธฐ ๋•Œ๋ฌธ์— ์›น ์•ฑ์˜ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์˜

์ค‘๋‹จ์œผ๋กœ ๋งŽ์€ ์‚ฌ์šฉ์ž์˜ ํ”ผํ•ด๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ ์จ ์ง€์†์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ

๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ด์œ ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ( ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ์ €ํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€๋ฅผ ํ•˜๋Š” ๊ฒƒ )

public static void main(String[] args) {
	try {
    	System.out.println(2/0);
    } catch(ArithmeticException e) {
    	System.out.println("ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ๋Œ€์ฒด ์—ญํ• ");
    }
    System.out.println("๋‹ค์Œ ์ฝ”๋“œ");
}
// ์ถœ๋ ฅ๊ฒฐ๊ณผ
// ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ๋Œ€์ฒด ์—ญํ• 
// ๋‹ค์Œ ์ฝ”๋“œ
// ์ฆ‰, ์˜ˆ์™ธ๋ฐœ์ƒ์„ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ ์จ ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘๋‹จ์—†์ด ๋‹ค์Œ ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ผ๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํ•˜๊ฒŒ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

try ~ catch

์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” try ~ catch๋ฌธ์„ ํ†ตํ•ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด try์•ˆ์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ• 

๊ตฌ๋ฌธ์ด ๋“ค์–ด๊ฐ„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด ์ฒ˜๋Ÿผ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”

์ฝ”๋“œ๋Š” try์•ˆ์— ๋„ฃ์–ด ์ฃผ๋ฉด ๋œ๋‹ค. catch๊ตฌ๋ฌธ์„ ๋ณด๋ฉด catch(ArithmeticException e)์ธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

์•ž์— ArithmeticException๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด๋ฉฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์ฃผ๊ณ  ๋’ค์— e๋Š” ๋ณ€์ˆ˜๋ช…์ด๋‹ค.

์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ ์จ ๋‹ค์Œ์ฝ”๋“œ์ธ System.out.println("๋‹ค์Œ ์ฝ”๋“œ"); ๊ตฌ๋ฌธ์˜ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฆ‰, ์˜ˆ์™ธ๋ฐœ์ƒ์„ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ ์จ ํ”„๋กœ๊ทธ๋žจ์˜ ์ค‘๋‹จ์—†์ด ๋‹ค์Œ ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

4. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ( 2 )

์˜ˆ์™ธ๋ฅผ ํ•œ๊ฐœ๋งŒ ๋ณด์—ฌ์ค˜์„œ ์™€๋‹ฟ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์–ด์„œ ํ•˜๋‚˜์˜ ์˜ˆ์™ธ๋ฅผ ๋” ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

public static void main(String[] args) {
	int[] scores = {100, 200, 300};
    System.out.println(scores[3]); // ๋ฐฐ์—ด์˜ 3๋ฒˆ์งธ ์ธ๋ฑ์Šค ์ ‘๊ทผ ํ›„ ์ถœ๋ ฅ
    // ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” 3์นธ์ด ๋งž๋Š”๋ฐ ์ธ๋ฑ์Šค๋กœ ๋ณด๋ฉด 0 , 1 , 2 ์ด๊ธฐ๋•Œ๋ฌธ์— 3์˜ ํฌ๊ธฐ์˜ ์นธ์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
}
// ์ถœ๋ ฅ ๊ฒฐ๊ณผ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at xxxxx.xxx.ExceptionApp.main(ExceptionApp.java:3)

์ฝ”๋“œ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ArrayIndexOutOfBoundsException๋ผ๋Š” ์˜ˆ์™ธํด๋ž˜์Šค๊ฐ€ ํ˜ธ์ถœ์ด ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ์˜ ๋ฌธ์ œ๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ์˜ ๋งž์ง€์•Š๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์˜ˆ์™ธ ๋˜ํ•œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

public static void main(String[] args) {
	int[] scores = {100, 200, 300};
    
    try {
    	System.out.println(scores[3]);
    } catch(ArrayIndexOutOfBoundsException e) {
    	System.out.println("๋ฐฐ์—ด์˜ indexํฌ๊ธฐ๋ฅผ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค.");
    }
    System.out.println("๋‹ค์Œ ์ฝ”๋“œ");
}
// ์ถœ๋ ฅ๊ฒฐ๊ณผ
// ๋ฐฐ์—ด์˜ indexํฌ๊ธฐ๋ฅผ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค.
// ๋‹ค์Œ ์ฝ”๋“œ

์ถœ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

5. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ catch๋ฌธ ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ

1. e.printStackTrace() => ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ „์ฒด์ ์ธ ์˜ˆ์™ธ์˜ ๋Œ€ํ•œ ์ƒ์„ธ์ ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

2. e.getMessage() => ์˜ˆ์™ธ๋ฐœ์ƒ์˜ ์ด์œ ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

 

6. ์˜ˆ์™ธ ์ข…๋ฅ˜ ( CheckedException & UnCheckedException )

1. Checked Exception

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฒดํฌ๋ฅผ ํ•ด์ฃผ๋Š” Exception์ด๋‹ค.

์ฆ‰, ๋Ÿฐํƒ€์ž„ ์‹คํ–‰์„ ์•ˆํ•˜๋”๋ผ๋„ ์‚ฌ์ „์— ์ฝ”๋“œ์ƒ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์•Œ๋ ค์ค€๋‹ค. ( ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค. )

์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์•Œ๋ ค์ฃผ๋Š” Exception์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ ) IOException๊ณผ ์ƒ์†๋ฐ›๋Š” FileNotFoundException ๋“ฑ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.

 

2. UnChecked Exception

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฒดํฌ๋ฅผ ์•ˆํ•ด์ฃผ๋Š” Exception์ด๋‹ค.

์ฆ‰, ๋Ÿฐํƒ€์ž„ ๊ณผ์ •์—์„œ ์ฝ”๋“œ์ƒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋‚˜ํƒ€๋‚˜๋Š” ์˜ค๋ฅ˜๋กœ์จ ๋Œ€ํ‘œ์ ์œผ๋กœ ์œ„์—์„œ ๋ณด์•˜๋˜ArrayIndexOutOfBoundsException, ArithmeticException ๋“ฑ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค. ์ด ๋‘ Exception์€ RuntimeException์˜ ๊ฐ์ฒด๋ฅผ

์ƒ์†์„ ๋ฐ›๋Š” ํด๋ž˜์Šค์ด๋‹ค. ์ฆ‰, RuntimeException์€ ๋Ÿฐํƒ€์ž„์‹œ์— ๋‚˜ํƒ€๋‚˜๋Š” ์˜ค๋ฅ˜๋ผ๋Š” ์ ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

7.  final๊ตฌ๋ฌธ

์ž๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค๋ณด๋ฉด ์ข…์ข… ์™ธ๋ถ€์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋น„์ผ๋น„์ œํ•˜๋‹ค.

์ด๋Ÿด๋•Œ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ์ž๋ฐ”์—์„œ IOException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณค ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์™ธ๋ถ€์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ™์žก๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ Connection๊ณผ ๊ฐ™์€ DB์˜ ์—ฐ๊ฒฐ์„ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ ๋ ๋•Œ๊นŒ์ง€ ์œ ์ง€๋ฅผ ์‹œํ‚ค๊ณ ๋Š” ํ•œ๋‹ค. ์ด๋Ÿด๋•Œ close๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ์—์„œ

๋Š์–ด์ค„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด final๊ตฌ๋ฌธ์ด๋‹ค.

public static void main(String[] args) {

	FileWriter f = null; // finally๊ตฌ๋ฌธ์—์„œ ๋ฐ›์œผ๋ ค๊ณ  ์™ธ๋ถ€์— ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”
    // try์— ์„ ์–ธํ•˜๋ฉด ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ๋˜์–ด์„œ finally ๊ตฌ๋ฌธ ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋ชป๋ฐ›๋Š”๋‹ค.
    
	try {
		f = new FileWriter("data.txt"); // ํŒŒ์ผ ์ƒ์„ฑ ๊ตฌ๋ฌธ
		f.write("Hello"); // ์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ catch๋ฌธ์œผ๋กœ ๊ฐ€๊ธฐ๋•Œ๋ฌธ์— ๋ฐ‘์— ๊ตฌ๋ฌธ์„ ์‹คํ–‰์„ ์•ˆํ•จ.
		// f.close(); => ์ฆ‰, close๊ฐ€ ์•ˆ๋œ๋‹ค.
	} catch(IOException e) {
		e.printStackTrace();
	} finally {
    	if(f != null) { // f๊ฐ€ null์ด ์•„๋‹ ๊ฒฝ์šฐ ์ฆ‰, ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰์„ ํ•ด์ฃผ๊ฒ ๋‹ค.
        	try {
            	f.close(); // close๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๊ณผ์˜ ์—ฐ๊ฒฐ์„ ๋‹ซ์•„์ค€๋‹ค.
                // try์˜ Exception์ด ๋ฐœ์ƒ ํ•˜๋˜ ์•ˆํ•˜๋˜ ๋ฌด์กฐ๊ฑด finally๊ตฌ๋ฌธ์„ ์‹คํ–‰์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
            } catch(IOException e) { // f.close() ๋˜ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฒ˜๋ฆฌ.
            	e.printStackTrace();
            }
        }
    }
}

 

8.  throws ๊ตฌ๋ฌธ

throws ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์ด ๋งŒ๋“  ๋ฉ”์„œ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ํ˜ธ์ถœํ• ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ ํ•  ๋ฉ”์„œ๋“œ๋ผ๋Š”๊ฒŒ ํŒ๋‹จ์ด๋˜๋ฉด ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ์ฒด๋ฅผ "throws ์˜ˆ์™ธํด๋ž˜์Šค" ๋ฅผ ๋„ฃ์–ด ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.

// Mainํด๋ž˜์Šค >
public static void main(String[] args) {
	Test t = new Test();
	try {
    	t.calculate(3, 0) // => 3 / 0 => ArithmeticException ๋œฐ ์˜ˆ์ •
	} catch (ArithmeticException e) {
		System.out.println("0์„ ๋‚˜๋ˆ„๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค!!");
	}
}

// Testํด๋ž˜์Šค >
public int calculate(int number1, int number2) throws ArithmeticException {
	return number1 / number2;
}

// ์ด๋Ÿฐ์‹์œผ๋กœ ํƒ€ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•  ๋•Œ throwsํ‚ค์›Œ๋“œ์™€ ๋ฐœ์ƒํ•  ์˜ˆ์™ธ (ArithmeticException)๋ฅผ
// ๋ช…์‹œ๋ฅผ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

'โ˜•Java > ๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด  (1) 2024.11.05
[Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )  (1) 2024.11.05
[Java] JVM ๋™์ž‘ ์›๋ฆฌ  (1) 2024.10.23
[Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜  (9) 2024.10.05
[Java] ์ƒ์† ( Extends )  (3) 2024.05.01
'โ˜•Java/๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )
  • [Java] JVM ๋™์ž‘ ์›๋ฆฌ
  • [Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜
  • [Java] ์ƒ์† ( Extends )
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (150)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (25)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (10)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (20)
        • ๐Ÿ“Java Programming (19)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ž…์ถœ๋ ฅ
    ํด๋ž˜์Šค
    Python
    Spring Framework
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    spring
    ํด๋ผ์šฐ๋“œ
    ์Šคํ”„๋ง
    ๋ฐฉ์†ก๋Œ€
    Java
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ํŒŒ์ด์ฌ
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    ์ปดํŒŒ์ผ๋Ÿฌ
    ์ž๋ฐ”
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ๋‹คํ˜•์„ฑ
    ์„ธ๊ณ„ํ™”
    ๋ฐฉํ†ต๋Œ€
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Java] ์˜ˆ์™ธ ( Exception )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”