์˜ˆ์™ธ ์œ ํ˜•

"์˜ค๋Š˜ ํ•œ ๊ฐ€์ง€ ๋” ์–˜๊ธฐํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ ๋ชจ๋“  ์˜ˆ์™ธ๋Š” ์ฒดํฌ( checked ) ์™€ ์–ธ์ฒดํฌ (์žก์•„์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ์žก์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ)์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์˜ˆ์™ธ ๋Š” ์žก์•˜๋‹ค."

"์ฝ”๋“œ์—์„œ ์˜๋„์ ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"

"๋‹น์‹ ์€ ๋‹น์‹  ์ž์‹ ์˜ ์ฝ”๋“œ์—์„œ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹น์‹  ์ž์‹ ์˜ ์˜ˆ์™ธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ Java Machine์ด ๋˜์ง„ ์˜ˆ์™ธ์— ์ง‘์ค‘ํ•ฉ์‹œ๋‹ค."

"์ข‹์•„์š”."

" ๋ฉ”์„œ๋“œ์—์„œ ClassNotFoundException ๋˜๋Š” FileNotFoundException ์ด ๋ฐœ์ƒ(๋ฐœ์ƒ) ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”์„œ๋“œ ์„ ์–ธ์— ์ด๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ํ™•์ธ๋œ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค."

ํ™•์ธ๋œ ์˜ˆ์™ธ์˜ ์˜ˆ
public static void method1() throws ClassNotFoundException, FileNotFoundException

public static void main() throws IOException
public static void main() // Doesn't throw any exceptions

"๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” 'throws' ๋‹ค์Œ์— ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์˜ˆ์™ธ ๋ชฉ๋ก์„ ์”๋‹ˆ๋‹ค. ๋งž์ฃ ?"

"์˜ˆ. ํ•˜์ง€๋งŒ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด method1์•„๋ž˜ ์˜ˆ์ œ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋‘ ๊ฐ€์ง€ ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•˜๊ฑฐ๋‚˜ (ํ˜ธ์ถœ์ž์—๊ฒŒ) ๋‹ค์‹œ throwํ•˜์—ฌ ์„ ์–ธ์—์„œ ๋‹ค์‹œ throw๋œ ์˜ˆ์™ธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. "

"๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ๊ฐ€ ์„ ์–ธ์— ' throws FileNotFoundException , โ€ฆ'๊ฐ€ ํฌํ•จ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1) FileNotFoundException ์บ์น˜ , โ€ฆ

์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ try-catch ๋ธ”๋ก์œผ๋กœ ๋ž˜ํ•‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2) FileNotFoundException์„ ์žก์ง€ ๋งˆ์‹ญ์‹œ์˜ค , โ€ฆ

์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๋ฅผ ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ ์˜ throws ๋ชฉ๋ก ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ."

"์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?"

"์ด๊ฒƒ ์ข€ ๋ณด์„ธ์š”:"

ํ™•์ธ๋œ ์˜ˆ์™ธ์˜ ์˜ˆ
public static void main(String[] args)
{
    method1();
}

public static void method1() throws FileNotFoundException, ClassNotFoundException
{
    //Throws FileNotFoundException if the file doesn't exist
    FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}

"์ด ์˜ˆ์ œ์˜ ์ฝ”๋“œ๋Š” ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๊ฐ€ catchํ•ด์•ผ ํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ throwํ•˜๋Š” method1() ์„ ํ˜ธ์ถœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ."

"์ปดํŒŒ์ผํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ์— ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

์˜ต์…˜ 1: ๋‹จ์ˆœํžˆ ์˜ˆ์™ธ๋ฅผ ํ˜ธ์ถœ์ž์—๊ฒŒ ๋‹ค์‹œ ๋˜์ง‘๋‹ˆ๋‹ค.
public static void main(String[] args)  throws FileNotFoundException, ClassNotFoundException 
{
    method1();
}

public static void method1() throws FileNotFoundException, ClassNotFoundException
{
    //Throws FileNotFoundException if the file doesn't exist
    FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}

"์—ฌ๊ธฐ์„œ try-catch ๋กœ ์žก์Šต๋‹ˆ๋‹ค ."

์˜ต์…˜ 2: ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•ฉ๋‹ˆ๋‹ค.
public static void main(String[] args)
{
    try
    {
        method1();
    }
    catch(Exception e)
    {
    }
}

public static void method1() throws FileNotFoundException, ClassNotFoundException
{
    //Throws FileNotFoundException if the file doesn't exist
    FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}

"๋ช…ํ™•ํ•ด์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค."

"๋‹ค์Œ ์˜ˆ๋ฅผ ๋ณด์‹ญ์‹œ์˜ค. ๋‚˜๋จธ์ง€๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค."

์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋Œ€์‹  ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ํ˜ธ์ถœ ์Šคํƒ ์•„๋ž˜์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋กœ ๋‹ค์‹œ throwํ•ฉ๋‹ˆ๋‹ค.
public static void method2() throws FileNotFoundException, ClassNotFoundException
{
    method1();
}
ํ•˜๋‚˜์˜ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
public static void method3() throws ClassNotFoundException
{
   try
    {
        method1();
    }
    catch (FileNotFoundException e)
    {
        System.out.println("FileNotFoundException has been caught.");
    }
}
๋‘ ์˜ˆ์™ธ๋ฅผ ๋ชจ๋‘ ํฌ์ฐฉํ•˜๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ๋˜์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
public static void method4()
{
    try
    {
        method1();
    }
    catch (FileNotFoundException e)
    {
        System.out.println("FileNotFoundException has been caught.");
    }
    catch (ClassNotFoundException e)
    {
        System.out.println("ClassNotFoundException has been caught.");
    }
}

"์˜ˆ์™ธ ์œ ํ˜•์ด ํ•˜๋‚˜ ๋” ์žˆ๋Š”๋ฐ RuntimeException ๊ณผ ์ด๋ฅผ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์žก์„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ throws ์ ˆ ์— ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ."