Develop/JAVA

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

hello_u 2023. 1. 20. 21:13

์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ

 ๋‹ค์Œ์€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ try, catch๋ฌธ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋‹ค.

try {
    ...
} catch(์˜ˆ์™ธ1) {
    ...
} catch(์˜ˆ์™ธ2) {
    ...
}

try ๋ฌธ์•ˆ์˜ ์ˆ˜ํ–‰ํ•  ๋ฌธ์žฅ๋“ค์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด catch๋ฌธ์— ์†ํ•œ ๋ฌธ์žฅ๋“ค์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ try ๋ฌธ์•ˆ์˜ ๋ฌธ์žฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„์ค‘์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ˆ์™ธ์— ํ•ด๋‹น๋˜๋Š” catch๋ฌธ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

 

 

์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

int c;
try {
    c = 4 / 0;
} catch(ArithmeticException e) {
    c = -1;  // ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด ๋ฌธ์žฅ์ด ์ˆ˜ํ–‰๋œ๋‹ค.
}

rithmeticException์ด ๋ฐœ์ƒํ•˜๋ฉด c์— -1์„ ๋Œ€์ž…ํ•˜๋„๋ก ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. 

ArithmeticException e์—์„œ e๋Š” ArithmeticException ํด๋ž˜์Šค์˜ ๊ฐ์ฒด, ์ฆ‰ ์˜ค๋ฅ˜ ๊ฐ์ฒด์— ํ•ด๋‹นํ•œ๋‹ค.

์ด ์˜ค๋ฅ˜ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์˜ˆ์™ธ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ• ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

finally

public static void main(String[] args) {
        Sample sample = new Sample();
        int c;
        try {
            c = 4 / 0;
        } catch (ArithmeticException e) {
            c = -1;
        } finally {
            sample.shouldBeRun();  // ์˜ˆ์™ธ์— ์ƒ๊ด€์—†์ด ๋ฌด์กฐ๊ฑด ์ˆ˜ํ–‰๋œ๋‹ค.
        }
    }

finally ๊ตฌ๋ฌธ์€ try ๋ฌธ์žฅ ์ˆ˜ํ–‰ ์ค‘ ์˜ˆ์™ธ๋ฐœ์ƒ ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์œ„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด sample.shouldBeRun() ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜์–ด "ok, thanks" ๋ฌธ์žฅ์ด ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

 

RuntimeExeption๊ณผ Exception

 

RuntimeException์€ ์‹คํ–‰์‹œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ด๊ณ  Exception์€ ์ปดํŒŒ์ผ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ด๋‹ค.

์ฆ‰, Exception์€ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์‹œ ์ด๋ฏธ ์˜ˆ์ธก๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ 

RuntimeException์€ ๋ฐœ์ƒ ํ• ์ˆ˜๋„ ๋ฐœ์ƒ ์•ˆ ํ• ์ˆ˜๋„ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ž‘์„ฑํ•œ๋‹ค.

๊ทธ๋ž˜์„œ Exception์„ Checked Exception, RuntimeException์„ Unchecked Exception ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

 

์˜ˆ์™ธ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ƒํ™ฉ
IllegalArgumentException ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ์„ ์œ ๋ฐœ์‹œํ‚ฌ ๋•Œ
IllegalStateException ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ๊ฐ€ ์•„๋‹ ๋•Œ
NullPointerException ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐ’์ด null ์ผ ๋•Œ
IndexOutOfBoundsException ์ธ๋ฑ์Šค ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐ’์ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ๋•Œ
ArithmeticException ์‚ฐ์ˆ ์ ์ธ ์—ฐ์‚ฐ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ๋•Œ