๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ณต๋ถ€ ๊ธฐ๋ก/JAVA

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

ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜

- ์ปดํŒŒ์ผ ์—๋Ÿฌ (Compile time error)

- ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ (Run-time error)

Java์˜ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ: Error ์™€ Exception

 

์˜ˆ์™ธ (Exception)

: ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์ •์ƒ์ ์ธ ์ƒํƒœ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์‹ ํ˜ธ. ๊ฐ์ฒด์ž„

์˜ˆ์™ธ์ฒ˜๋ฆฌ (Exception handling)

: ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ์— ๋Œ€๋น„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•1 <try-catch๋ฌธ>

try {
	//์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋ฌธ์žฅ
}
catch(Exception e1) {
	//Exception1์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์žฅ
}
catch(Exception e2) {
	//Exception2๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์žฅ
}
...
finally {
	//์˜ˆ์™ธ ๋ฐœ์ƒ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๋ฌธ์žฅ
}

* if๋ฌธ๊ณผ ๋‹ฌ๋ฆฌ try๋ธ”๋Ÿญ์ด๋‚˜ catch๋ธ”๋Ÿญ ๋‚ด์— ํฌํ•จ๋œ ๋ฌธ์žฅ์ด ํ•˜๋‚˜๋ผ๊ณ  ํ•ด์„œ ๊ด„ํ˜ธ{}๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค.

 

try-catch๋ฌธ ์ˆ˜ํ–‰ ์ˆœ์„œ

โ–ถ try๋ธ”๋Ÿญ ๋‚ด์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ

โ‘  try๋ธ”๋Ÿญ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜์˜ ๋ฐ‘์— ์žˆ๋Š” ๋ฌธ์žฅ๋“ค์€ ๋ณด์ง€ ์•Š๊ณ ,

โ‘ก ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์™€ ์ผ์น˜ํ•˜๋Š” catch๋ธ”๋Ÿญ์ด ์žˆ๋Š”์ง€ ํ™•์ธ

โ‘ข ์ผ์น˜ํ•˜๋Š” catch๋ธ”๋Ÿญ์„ ์ฐพ์œผ๋ฉด: catch๋ธ”๋Ÿญ ๋‚ด์˜ ๋ฌธ์žฅ๋“ค์„ ์ˆ˜ํ–‰ -> ์ „์ฒด try~catch๋ฌธ ๋น ์ ธ๋‚˜๊ฐ

     ์ผ์น˜ํ•˜๋Š” catch๋ธ”๋Ÿญ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด: ์˜ˆ์™ธ ์ฒ˜๋ฆฌX

 

โ–ถ try๋ธ”๋Ÿญ ๋‚ด์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

โ‘  catch๋ธ”๋Ÿญ์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  try๋ธ”๋Ÿญ์„ ๋๊นŒ์ง€ ์ˆ˜ํ–‰ ํ›„ -> try~catch๋ฌธ ๋น ์ ธ๋‚˜๊ฐ

 

* finally ๋ธ”๋ก

: ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ๊ณผ ๊ด€๊ณ„์—†์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํฌํ•จ

๊ตฌ์กฐ์ ์œผ๋กœ ๋” ์„ ๋ช…ํ•˜๊ฒŒ ๋ณด์ธ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์œผ๋‚˜ ํ•„์ˆ˜๋Š” ์•„๋‹˜

์˜ˆ์™ธ ๋ฐœ์ƒ์‹œ: try ~ catch ~ fianlly

์˜ˆ์™ธ ๋ฐœ์ƒX: try ~ fianlly

 

 

 

์˜ˆ์™ธ ํด๋ž˜์Šค์˜ ๊ณ„์ธต๊ตฌ์กฐ

 

- Error

- Runtime Exception: ์ปดํŒŒ์ผ ์‹œ์— ์ฒดํฌ๋˜์ง€ ์•Š์Œ (unchecked exception) > ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์„ ํƒ

- Exception: ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Œ (checked exception) > ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•„์ˆ˜

 

Exception ํด๋ž˜์Šค

- ์ƒ์„ฑ์ž

1. Exception(String s) 

2. Exception() 

- ๋ฉ”์†Œ๋“œ

1. String getMessage(): Exception ์˜ค๋ธŒ์ ํŠธ์˜ String ๋˜๋Š” null์„ ๋ฆฌํ„ด

2. void printStackTrace(): ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ ๊ทผ์›์ง€๋ฅผ ์ฐพ์•„ ๋‹จ๊ณ„๋ณ„๋กœ ์˜ˆ์™ธ๋ฅผ ์ถœ๋ ฅ

 

 

 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•2 <throws>

: ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ์ชฝ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ ํ˜ธ์ถœํ•œ ์ชฝ์—์„œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹

 

 

try๋ธ”๋Ÿญ ์•ˆ์—์„œ doIt.doNormalCase() ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋‚จ

> doNormalCase() ๋ฉ”์†Œ๋“œ ์ˆ˜ํ–‰

   - throws DivideByZeroException

> ๋ฉ”์†Œ๋“œ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ DivideByZeroException ์˜ˆ์™ธ ๋ฐœ์ƒํ•˜๋ฉด ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์˜ try๋กœ ์˜ˆ์™ธ๋ฅผ ๋˜์ง

> catch๋ธ”๋Ÿญ์ด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ.

> doNormalCase() ๋ฉ”์†Œ๋“œ ์ข…๋ฃŒ (throw ๋ฐ‘์˜ ๋ฌธ์žฅ์€ ์ˆ˜ํ–‰X)

 

* doNormalCase() ๋ฉ”์†Œ๋“œ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”์†Œ๋“œ ๋๊นŒ์ง€ ์ˆ˜ํ–‰

 

 

 

 

 

 

 

์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ๋งŒ๋“ค๊ธฐ

: ๊ธฐ์กด์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์ƒˆ๋กœ์šด ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ •์˜

class MyException extends Exception {
	MyException(String msg) {
    	super(msg);	//์กฐ์ƒ์ธ Exceptionํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ
    }
}

 

* try ๋ธ”๋ก์€ ๋‹ค์ˆ˜์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ catch ๋ธ”๋ก์€ ํ•œ ์ข…๋ฅ˜์˜ ์˜ˆ์™ธ๋งŒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ catch ๋ธ”๋ก์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. > ๋” ์ž์„ธํ•œ catch ๋ธ”๋ก์ด ๋จผ์ € ๋‚˜์™€์•ผ ํ•œ๋‹ค.

'๊ณต๋ถ€ ๊ธฐ๋ก > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€