본문 바로가기

Language/Java

Throws (예외 처리 미루기)

<개요>

Throws

해당 매소드에서 일어날 수 있는 예외를 자체적으로 해결 안하고, 나 몰라라 하고 밖으로 던지는 명령어

매소드를 호출한 쪽에서 문제를 해결해야 한다. 

책임전가하는 명령어 

매소드를 호출한 쪽에서 또 throws 쓰면, 그냥 프로그램 퍼져도 책임 안 지겠다는 소리임.

import java.io.FileWriter;
import java.io.IOException;

public class _07_Throws {
    public static void main(String[] args) {
    
    // 호출한 메인 매소드에서 해결하거나, 여기서도 throws로 나몰라라 하거나
    // 메인 메소드에서도 throws로 던지면 그냥 문제 생기는 거 감안하고 돌리겠단 소리임.
        try {
            writeFile();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("메인 메소드에서 해결할게요.");
        }

    }

    public static void writeFile() throws IOException {
    
    // 이건 매소드 내에서 자체적으로 해결할 때의 코드 우리는 throws로 문제를 내팽겨칠 것이기 때문에
    // 이 매소드 쓰지 않음.
//        try {
//            FileWriter writer = new FileWriter("test.txt");
//            throw new IOException("파일 쓰기에 실패했어요");
//        } catch (IOException e) {
//            e.printStackTrace();
//            System.out.println("writeFile 매소드 내에서 자체 해결했어요.");
//        }


        FileWriter writer = new FileWriter("test.txt");
        throw new IOException("파일 쓰기에 실패했어요");
    }
}

스스로 해보기 

package WorkOut_Myself;

import java.io.FileWriter;
import java.io.IOException;

public class Throws_Myself {
    public static void main(String[] args) {
        try {
            FW();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("자체 해결");
        }
    }

    public static void FW() throws IOException {
        FileWriter writer = new FileWriter("test.txt");
        throw new IOException("파일 쓰기에 실패했어요");

    }

}

'Language > Java' 카테고리의 다른 글

Runnable  (0) 2023.03.11
Thread  (0) 2023.03.09
사용자 정의 예외  (0) 2023.03.02
Try with Resources  (0) 2023.02.28
Finally 구문  (0) 2023.02.28