[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차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."