[JAVA]/11.예외처리

throw와 throws의 차이

76beny 2022. 4. 20. 23:20

throw와 throw의 차이

-throw : 이 키워드를 통해 예외를 강제로 발생시킨다.

-throws :  이 키워드 앞에 오는 메서드는 뒤에오는 예외들이 발생할 수 있다 라고 알려주는 기능

 

코드예시1

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

public class UseThrows {
	// throws : 메서드가 발생하면 이러이러한 예외가 발생할 수 있다.
	// throw : 예외발생, 예외를 만들어서 던지는 문장(000라는 예외발생)
	//예외발생시 상위 메소드에게 책임을 전가하는 키워드
	// 단, main에서의 예외는 프로그램 종료를 의미

	public static void method() throws IOException {
		//IOException는 exception의 자손이라 try필수->usethrows2에서 확인
		// 메서드가 발생하면 IOException이라는 예외가 발생 할 수 있다 ( throws의 역할)
		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();

	}
}

 

 

코드예시2

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

public class UseThrows2 {
	// throws : 예외발생시 상위 메소드에게 책임을 전가하는 키워드
	//			 단, main에서의 예외는 프로그램 종료를 의미
	
	// throw : 예외를 만들어서 던지는 문장
	
	
	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)
예외가 발생하였습니다.

 */

 

 

 


"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."