티스토리 뷰

개발/Java

throws 예외처리

욱스다 2022. 9. 15. 23:36

BufferedReader를 사용해서 

텍스트 파일을 읽는 예제.

package lifecoding;

import java.io.*;

class B {
    void run(){
        BufferedReader bReader = new BufferedReader(new FileReader("out.txt"));
        String input = bReader.readLine();
        System.out.println(input);
    }
}

class C {
    void run(){
        B b = new B();
        b.run();
    }
}

public class Exception4 {
    public static void main(String[] args){
        C c = new C();
        c.run();
    }
}

이와 같이 작성하게되면 B클래스의 run메소드는 오류를 발생시킨다.

그러므로 B 클래스에

class B {
    void run() throws IOException{
        BufferedReader bReader = new BufferedReader(new FileReader("out.txt"));
        String input = bReader.readLine();
        System.out.println(input);
    }
}

라고 작성하게되면 B클래스의 오류는 사라지고 B클래스를 인스턴스화해서 사용하고있는 

C클래스의 b.run이 오류가 나게된다 이어서 오류를 해결하려면 (다음 사용자에게 넘기려면)

class C {
    void run() throws IOException{{
        B b = new B();
        b.run();
    }
}

C클래스에서 B클래스와 동일하게 IOException을 throws해주면된다.

그렇게되면 메인메소드의 C클래스를 인스턴스화한 c의 c.run 부분에서 오류가 발생하는데

public class Exception4 {
    public static void main(String[] args){
        C c = new C();
        try {
            c.run();
        } catch (FileNotFoundException e) {
            System.out.println("out.txt 파일이 필요합니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

메인 메서드의 C클래스를 인스턴스화한 c.run 부분에 try {} catch() {} 로 

오류를 핸들링해주면 된다.

+

추가적으로 코드의 흐름을 보면 throws는 오류가 나는 상황을

해당 클래스를 사용하려는 사용자에게 넘겨준다는 뜻이된다.

그러므로 마지막에서 사용하는 부분에서는 try{} catch(){} 로 해당 코드를 실행하는데 있어서

오류가 발생하는 상황에 에러 메세지를 띄워주거나, 오류 메세지를 커스텀해서 전달해주면 되겠다.

'개발 > Java' 카테고리의 다른 글

Map 컬렉션  (0) 2022.09.05
Set 컬렉션  (0) 2022.09.05
List 컬렉션  (0) 2022.09.05
인스턴스 멤버와 this  (0) 2022.09.04
정적 멤버와 static  (0) 2022.09.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함