Beny's Study

[강의] throw 와 throws 본문

[JAVA]/11.예외처리

[강의] throw 와 throws

76beny 2022. 5. 29. 20:58

throws 

- 메서드가 발생하면 이러이러한 예외가 발생할 수 있다.

-예외발생시 상위 메소드에게 책임을 전가하는 키워드
- 단, main에서의 예외는 프로그램 종료를 의미


throw 

-예외발생, 예외를 만들어서 던지는 문장(000라는 예외발생)
-예외발생시 상위 메소드에게 책임을 전가하는 키워드
-단, main에서의 예외는 프로그램 종료를 의미

 

import java.io.File;
import java.io.IOException;

public class UseThrows {

	public static void method() throws IOException {
		
		File file = new File("./Test");
		file.createNewFile(); 	// IOException 발생, 대표적으로 명시적인 예외
		System.out.println("TEST1");
		if (true)
			throw new IOException("TEST");
		System.out.println("TEST2"); // 예외 발생시 아래에 문장은 실행되지 않음.
	}

	public static void main(String[] args) {
//		method();

	}
}

IOException는 exception의 자손이라 try필수
메서드가 발생하면 IOException이라는 예외가 발생 할 수 있다 ( throws의 역할)

 

[출력]

예외발생하지않아 미출력

 

import java.io.File;
import java.io.IOException;

public class UseThrows2 {
	
	public static void method() throws IOException {
		File file = new File("./Test");
		file.createNewFile(); // IOException 발생, 대표적으로 명시적인 예외 
		System.out.println("TEST1");
		if(true)
			throw new IOException("TEST");
		System.out.println("TEST2"); // 예외 발생시 아래에 문장은 실행되지 않음.
	}

	
	public static void main(String[] args) {
		try {			//정가된예외를 처리하는 try문
			method();
		} catch(IOException e) {	//예외를 받아주는 catch문
			e.printStackTrace();
			System.out.println("예외가 발생하였습니다.");
		}//예외가 발생하면 처리해야할 로직
		//ex)로그를 찍는다던가...email을 보낸다던가.
		
	}
}

[출력]

TEST1
java.io.IOException: TEST
at UseThrows2.method(UseThrows2.java:16)
at UseThrows2.main(UseThrows2.java:23)
예외가 발생하였습니다.