๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
FOR SW ENGINEER๐Ÿ‘ฉ‍๐Ÿ’ป/JAVA

JAVA_์˜ˆ์™ธํด๋ž˜์Šค์™€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•(try~catch, throws)

by ์”จ๋‹ˆ 2021. 9. 30.
728x90

<์˜ˆ์™ธ & ์˜ˆ์™ธํด๋ž˜์Šค>

-์ปดํŒŒ์ผ๋Ÿฌ ์ฒดํฌ ์˜ˆ์™ธ : ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด ์—๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์™ธ๋ถ€์ ์ธ ์—๋Ÿฌ์ผ์ˆ˜์žˆ๊ณ , ๋ฌธ๋ฒ•์ƒ ์ž˜๋ชป ์ ์€ ์—๋Ÿฌ์ด๊ธฐ๋„ ํ•˜๋‹ค.

-์‹คํ–‰์˜ˆ์™ธ(Runtime Exception) : ๋ฌธ๋ฒ•์ƒ ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ๋ฌธ์ œ(์—๋Ÿฌ)๋ฐœ์ƒ. => ์™„๋ฒฝํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์กด์žฌํ•˜์ง€ ์•Š๋‹ค.

 

โ–ถ์ฃผ์š” ์‹คํ–‰ ์˜ˆ์™ธ

 

โœณ ์ตœ์ƒ์œ„ ์˜ˆ์™ธ ํด๋ž˜์Šค : Exception โœณ

 

1.  NullPointerException

๊ฐ์ฒด ์ฐธ์กฐ๊ฐ€ ์—†๋Š” ์ƒํƒœ(๋น„์–ด์žˆ๋Š” ์ƒํƒœ), ์ฆ‰ null๊ฐ’์„ ๊ฐ–๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด ์ ‘๊ทผ ์—ฐ์‚ฐ์ž์ธ dot(.)๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒ.

 

2. ArrayIndexOutOfBoundsException

๋ฐฐ์—ด์—์„œ ์ธ๋ฑ์Šค ๋ฒ”์œ„ ์ดˆ๊ณผํ•ด ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒ.

 

3. NumberFormatException

๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๋ฌธ์ž์—ด์ด ์ˆซ์ž๊ฐ€ ์•„๋‹Œ๋ฐ๋„ ์ˆซ์ž๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒ.

 

4. ClassCastException

ํ˜• ๋ณ€ํ™˜์€ ๋ถ€๋ชจํด๋ž˜์Šค์™€ ์ž์‹ํด๋ž˜์Šค ๊ฐ„์—์„œ ๋ฐœ์ƒํ•˜๊ณ , ๊ตฌํ˜„ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„์—๋„ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฐ ๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค. ๋ณ€ํ™˜๊ฐ€๋Šฅํ•œ ํƒ€์ž…๊ด€๊ณ„๊ฐ€ ์•„๋‹Œ๋ฐ ํƒ€์ž…๋ณ€ํ™˜ ์‹œํ‚ค๋ ค๊ณ  ํ•˜๋Š”๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฐœ์ƒ.

 

 

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

1. try~catch~finally

โ–ถ ์ผ๋ฐ˜์ ์ธ try~catch

- try๋ธ”๋ก์—๋Š” ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ.

- try๋ธ”๋ก์˜ ์ฝ”๋“œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—†์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋  ๊ฒฝ์šฐ catch๋ธ”๋ก์€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ.

- ๋งŒ์•ฝ try๋‚ด๋ถ€์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ ์‹คํ–‰๋ฉˆ์ถ”๊ณ , catch๋ธ”๋ก์œผ๋กœ ์ด๋™ํ•ด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์ฝ”๋“œ ์‹คํ–‰ํ•จ.

 

1. NullPointerException์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

2. ArrayIndexOutOfException ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•

3. Numberformat์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•

 

โ–ถ try~catch~finally

- ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์‹คํ–‰ํ•  ๋‚ด์šฉ ์žˆ๋‹ค๋ฉด, finally๋ธ”๋ก ๋‚ด๋ถ€์— ์‹คํ–‰ ๋‚ด์šฉ ์ž‘์„ฑํ•จ.

 

- try~catch~finally์˜ˆ์‹œ1

- try~catch~finally์˜ˆ์‹œ2

 

โ–ถ ๋‹ค์ค‘ catch(๋‘˜ ์ด์ƒ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ) - ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํด๋ž˜์Šค๋„ ์ƒ์† ๊ด€๊ณ„ ๊ฐ€์ง.

- try๋ธ”๋ก ๋‚ด๋ถ€๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ์˜ˆ์™ธ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์ค‘ catch๋ธ”๋ก ์ž‘์„ฑํ•ด ์˜ˆ์™ธ๋“ค์„ ์ฒ˜๋ฆฌ.

- catch๋ธ”๋ก์€ ์œ„์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ฒ€์ƒ‰๋˜๋ฏ€๋กœ ์ƒ์œ„ ํด๋ž˜์Šค์˜ catch๋ธ”๋ก์ด ์œ„์— ์žˆ๋‹ค๋ฉด ํ•˜์œ„ ์˜ˆ์™ธ ํด๋ž˜์Šค์˜ catch๋ธ”๋ก์€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ.

- catch()๊ด„ํ˜ธ ์•ˆ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ ์˜ˆ์™ธ๋ฅผ | ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ๋จ. ์ด ๋ฐฉ์‹ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋‘ ์˜ˆ์™ธ ํด๋ž˜์Šค ๊ด€๊ณ„๊ฐ€ ์ƒ์†๊ด€๊ณ„์ด๋ฉด ์•ˆ๋จ.

 

1. ๊ธฐ๋ณธ ๋‹ค์ค‘ try~catch๋ฌธ(๋‹ค์ค‘ catch๋ธ”๋ก)

 **์ฃผ์˜ํ•  ์  : ํ•˜์œ„ ์˜ˆ์™ธ ํด๋ž˜์Šค ์ƒ์œ„๋ธ”๋ก์— ๋จผ์ € ์จ์•ผํ•จ**

2. finally์•ˆ์˜ try~catch๋ฌธ (catch๋ฌธ ์•ˆ์— catch๋ฌธ)

3. ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€ ์—๋Ÿฌํด๋ž˜์Šค ๊ฐ™์€ catch๋ฌธ์—์„œ ์‚ฌ์šฉ.

**์ฃผ์˜ํ• ์  : ๊ฐ™์€ catch๋ฌธ ๋‚ด ํด๋ž˜์Šค๋Š” ์ƒ์†๊ด€๊ณ„์—ฌ์„œ๋Š” ์•ˆ๋จ**

 

2. throws

-try~catch๊ตฌ๋ฌธ์ด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ง์ ‘ ํ•ด๊ฒฐ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ๋ผ๋ฉด throws๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋– ๋„˜๊ธฐ๋Š” ์ฝ”๋“œ์ด๋‹ค.

-์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ž์—๊ฒŒ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๋ฐฉ๋ฒ•.

- main๋˜ํ•œ throws ์‚ฌ์šฉ๊ฐ€๋Šฅ.

++๊ฐ•์ œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œํ‚ค๊ธฐ : ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์„ ์–ธํ•œ ์˜ˆ์™ธํด๋ž˜์Šค /  ์ž๋ฐ”๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์˜ˆ์™ธAPI์—์„œ ์˜ˆ์™ธ ๊ฐ•์ œ ๋ฐœ์ƒ์‹œํ‚ค๋ ค๋ฉด throwํ‚ค์›Œ๋“œ ์ด์šฉ. -> ์˜ˆ์™ธ๋ฅผ ๊ฐ•์ œ๋กœ ๋ฐœ์ƒ์‹œํ‚ค๋ฉฐ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ•์ œ์ข…๋ฃŒํ•จ. (throws์™€ ๊ฐ™์ด ์‚ฌ์šฉ)

 

โ–ถthrows ๊ธฐ๋ณธ ๊ตฌ๋ฌธ

 

โ–ถ try~catch & throws

-throws ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ try๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•จ. ๊ทธ๋ฆฌ๊ณ  catch๋ธ”๋ก์—์„œ ๋– ๋„˜๊ฒจ ๋ฐ›์€ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

 

โ–ถthrow - ์ž˜๋ชป๋œ ๊ฐ’ ์ „๋‹ฌ๋˜์—ˆ๋‹ค ์ƒ๊ฐํ•˜๋ฉด throw์‚ฌ์šฉํ•ด ๊ฐ•์ œ ์ข…๋ฃŒ์‹œํ‚ด

 

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

- ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ์ž๋ฐ” ํ‘œ์ค€ API์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ˆ์™ธ ํด๋ž˜์Šค๋งŒ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์˜ˆ์™ธ๋ฅผ ํ‘œํ˜„๋ถˆ๊ฐ€.

- ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž์ฒด์ ์œผ๋กœ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์˜ˆ์™ธ ํด๋ž˜์Šค ์ •์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์•ผํ•จ.

-์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค๋Š” Exceptionํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋ฉด ๋จ.

-์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ํด๋ž˜์Šค ์ด๋ฆ„์€ Exception์œผ๋กœ ๋๋‚˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.

 

4. ์˜ˆ์™ธ ์ถœ๋ ฅ

-์˜ˆ์™ธ ๋ฐœ์ƒ์‹œ ๋ณดํ†ต ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹คํ–‰๋ฌธ์„ ์ž‘์„ฑํ•œ๋‹ค.

-๋•Œ๋กœ๋Š” ์˜ˆ์™ธ๋ฅผ ์ถœ๋ ฅํ•ด์„œ ์–ด๋””์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€, ์–ด๋–ค ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ์ถœ๋ ฅํ•ด, ์˜ˆ์™ธ๋ฅผ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

- ์˜ˆ์™ธ ์ถœ๋ ฅ์œผ๋กœ ์ธํ•ด ์˜ˆ์™ธ๋ฅผ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•˜์—ฌ, ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋นจ๋ผ ์งˆ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

728x90