"์•ˆ๋…•ํ•˜์„ธ์š”, ์•„๋ฏธ๊ณ . ์˜ค๋Š˜์€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ์ˆ˜์—…์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ์™ธ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์™ธ๋Š” ํ”„๋กœ๊ทธ๋žจ ์˜ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์—์„œ:

1. ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ์™„์ „ํžˆ ์ฐจ๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ํŒŒ์ผ ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ํ”„๋กœ๊ทธ๋žจ์ด null ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ”„๋กœ๊ทธ๋žจ์ด ์ˆซ์ž๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

์ด๋Ÿฌํ•œ ๋ชจ๋“  ์กฐ์น˜๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฐ๊ณผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ฆ‰์‹œ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฝ”๋“œ ์‹คํ–‰์„ ๊ณ„์†ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

"์™œ?"

"์ž๋™์ฐจ๊ฐ€ ๋„๋กœ๋ฅผ ๋ฒ—์–ด๋‚˜ ์ ˆ๋ฒฝ์—์„œ ๋–จ์–ด์ง€๋ฉด ๊ณ„์† ๋ฐ”ํ€ด๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์ด์น˜์— ๋งž์Šต๋‹ˆ๊นŒ?"

"๊ทธ๋Ÿผ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์ค‘์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?"

"์˜ˆ. ์ ์–ด๋„ ์ด๋Ÿฐ ์ผ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."

"๋งค์šฐ ํ˜„๋ช…ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์„ ๊ณ„์† ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„๊นŒ์š”?"

"์˜ˆ. Word์— ์—„์ฒญ๋‚œ ์–‘์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์žฅ ์ž‘์—…์ด ์‹คํŒจํ–ˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ๋ฏฟ๊ฒŒ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๊ณ„์† ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ?"

"๋„ค."

"๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํฅ๋ฏธ๋กœ์šด ํ•ด๊ฒฐ์ฑ…์„ ๋‚ด๋†“์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•จ์ˆ˜๋Š” ์ž‘์—… ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 0์€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐ’์€ ์ผ๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๊ณ  ๋ฐ˜ํ™˜ ๊ฐ’์€ ์˜ค๋ฅ˜ ์ฝ”๋“œ์˜€์Šต๋‹ˆ๋‹ค."

"๊ทธ๋Ÿฌ๋‚˜ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์—๋„ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ (!) ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ ๋ฐ˜ํ™˜ ์ฝ”๋“œ(์ˆซ์ž)๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์ด๊ฒƒ์ด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ๊ฑฐ์˜ ์‹คํ–‰๋˜์ง€ ์•Š์ง€๋งŒ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ํ•จ์ˆ˜๋Š” ์ข…์ข… ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์œผ๋กœ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?"

"๋งž์•„. ๋‚˜๋„ ๊ทธ ์ƒ๊ฐํ–ˆ์–ด."

"๊ทธ๋Ÿฌ๋ฉด ์˜ˆ์™ธ์™€ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ˜•ํƒœ๋กœ ๋ฐ์€ ๋ฏธ๋ž˜๊ฐ€ ๋„๋ž˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Java Machine์€ ๋ชจ๋“  ์˜ค๋ฅ˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ํŠน์ˆ˜ ๊ฐœ์ฒด(์˜ˆ์™ธ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์˜ˆ์™ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์˜ˆ์™ธ๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์€ ์ฆ‰์‹œ ํ˜„์žฌ ํ•จ์ˆ˜์™€ ๋‹ค์Œ ํ•จ์ˆ˜ ๋“ฑ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” Java Machine์ด 'ํ˜ธ์ถœ ์Šคํƒ์„ ํ•ด์ œํ•œ๋‹ค'๊ณ  ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ญ์ƒ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ํ•˜์…จ์Šต๋‹ˆ๋‹ค."

"๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ–๋Š” ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜๊ณ  ๊ทธ๋“ค๊ณผ ํ•จ๊ป˜ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ํŠน๋ณ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ค‘์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

"์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํŠน๋ณ„ํ•œ try-catch ๊ตฌ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค . ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

์˜ˆ์™ธ(0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ)๋ฅผ ํฌ์ฐฉํ•˜๊ณ  ๊ณ„์† ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ˆ.
public class ExceptionExample2
{
    public static void main(String[] args)
    {
        System.out.println("Program starts");

        try
        {
            System.out.println("Before calling method1");
            method1();
            System.out.println("After calling method1. This will never be shown");
        }
        catch (Exception e)
        {
           System.out.println("Exception has been caught");
        }

        System.out.println("Program is still running");
    }

    public static void method1()
    {
        int a = 100;
        int b = 0;
        System.out.println(a / b);
    }
}
ํ™”๋ฉด ์ถœ๋ ฅ:

Program starts
Before method1 calling
Exception has been caught
Program is still running

"๊ทธ๋Ÿฐ๋ฐ ์™œ '๋ฉ”์†Œ๋“œ 1์„ ํ˜ธ์ถœํ•œ ํ›„. ์ด๊ฒƒ์€ ์ ˆ๋Œ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค'๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?"

"๋ฌผ์–ด์ฃผ์…”์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. 25ํ–‰์—์„œ 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. Java Machine์€ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ArithmeticException ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค."

"๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค method1. ์ด๋กœ ์ธํ•ด ๋ฉ”์†Œ๋“œ๊ฐ€ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. try-catch ๋ธ”๋ก ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ ๋ฉ๋‹ˆ๋‹ค ."

" try ๋ธ”๋ก ๋‚ด์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด catch ๋ธ”๋ก ์—์„œ catch๋ฉ๋‹ˆ๋‹ค . try ๋ธ”๋ก์˜ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  catch ๋ธ”๋ก์ด ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. "

"์ดํ•ด๊ฐ€ ์•ˆ ๋œ๋‹ค."

"์ฆ‰, ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

1. try ๋ธ”๋ก ๋‚ด์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ณณ์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ณ  catch ๋ธ”๋ก์ด ์‹คํ–‰๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

2. ์˜ˆ์™ธ ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด try ๋ธ”๋ก์ด ๋๊นŒ์ง€ ์‹คํ–‰๋˜๊ณ  catch ๋ธ”๋ก์€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . "

"๋ญ?"

"๊ฐ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ›„ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜์—ˆ๋Š”์ง€ ๋˜๋Š” ์˜ˆ์™ธ๋กœ ์ธํ•ด ๊ฐ‘์ž๊ธฐ ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์˜ˆ์™ธ๊ฐ€ ์žˆ์œผ๋ฉด catch ๋ธ”๋ก(์žˆ๋Š” ๊ฒฝ์šฐ)์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ˆ์™ธ๋ฅผ catchํ•ฉ๋‹ˆ๋‹ค. catch ๋ธ”๋ก์ด ์—†์œผ๋ฉด ํ˜„์žฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์šฐ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค."

"์ด์ œ ์•Œ ๊ฒƒ ๊ฐ™์•„์š”."

"ํ›Œ๋ฅญํ•œ."

"catch ๋ฌธ์—์„œ '์˜ˆ์™ธ'๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?"

" ๋ชจ๋“  ์˜ˆ์™ธ๋Š” Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. catch ๋ธ”๋ก ์— ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•˜์—ฌ ํŠน์ • ์˜ˆ์™ธ๋ฅผ catchํ•˜๊ฑฐ๋‚˜ ๊ณตํ†ต ์ƒ์œ„ ํด๋ž˜์Šค์ธ Exception์„ ์ง€์ •ํ•˜์—ฌ ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ catchํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ•„์š”ํ•œ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ e์˜ ์ •๋ณด(์˜ˆ์™ธ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•จ)"

"๋ฉ‹์ง€๋‹ค! ๋‚ด ๋ฐฉ๋ฒ•์—์„œ ๋‹ค๋ฅธ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"

"ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

์˜ˆ:
public class ExceptionExample2
{
    public static void main(String[] args)
    {
        System.out.println("Program starts");

        try
        {
            System.out.println("Before calling method1");
            method1();
            System.out.println("After calling method1. This will never be shown");
        }
        catch (NullPointerException e)
        {
           System.out.println("Null reference. Exception has been caught");
        }
        catch (ArithmeticException e)
        {
            System.out.println("Division by zero. Exception has been caught");
        }
        catch (Exception e)
        {
            System.out.println("Any other errors. Exception has been caught");
        }

        System.out.println("Program is still running");
    }

    public static void method1()
    {
        int a = 100;
        int b = 0;
        System.out.println(a / b);
    }
}

" try ๋ธ”๋ก์€ ์—ฌ๋Ÿฌ catch ๋ธ”๋ก ๊ณผ ์Œ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ๋ธ”๋ก์€ ์ง€์ •๋œ ์œ ํ˜•์˜ ์˜ˆ์™ธ๋ฅผ catchํ•ฉ๋‹ˆ๋‹ค."

"์ดํ•ดํ•œ ๊ฒƒ ๊ฐ™์•„์š”. ์•„์ง ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์ฝ”๋“œ์—์„œ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋‘๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค."