try~catch문을 사용했을 때와 메서드에 throws를 사용했을 때의 차이점
메서드 를 선언 할 때 throws를 사용하여 처리를 하게되면 해당 예외상황이 일어났을 때
'기본적인 예외상황 처리'가 수행된 후 프로그램이 종료된다.
그런데
try{
}catch(){
}
를 사용했을 경우에는 프로그램 실행중에 예외상황이 발생하면
catch문을 실행하고 프로그램이 종료되는것을 설정할 수 있다.
즉, 프로그램을 안죽이고 계속 아래구문을 수행하는 것이 가능하다. 물론 프로그램이 종료되도록 수행하는 것도 가능하다.
예제)
- try catch 구문 사용 -
public class ExceptionTest1 {
public static void main(String[]args){
int a=10;
int b=0;
int c=0;
try{
c=a/b;
}catch(NumberFormatException e){
System.out.println("catch2 실행");
}catch(ArithmeticException e){
b=1;
c=a/b;
System.out.println("catch1실행");
}catch(Exception e){
System.out.println("catch3 실행");
}
System.out.println("내가 출력 될까요?");
System.out.printf("%d/%d=%d\n",a,b,c);
System.out.println("main 끝!!");
}
}
/*
* 출력 결과
* catch1실행
* 내가 출력 될까요?
* 10/1=10
* main 끝!!ArithmeticException e
*
* 0으로 나눌 수 없으므로 Arithmetic예외가 발생하여 catch문을 수행 후
* 다음 구문인 "내가 출력 될까요?"가 출력된다. 그리고나서 계속적으로 수행 후 main이 종료된다.
*/
- throws사용 -
public class ExceptionTest1 {
public static void main(String[]args) throws Exception{
int a=10;
int b=0;
int c=0;
c=a/b;
System.out.println("내가 출력 될까요?");
//초기화 않된 지역변수 사용불가
System.out.printf("%d/%d=%d\n",a,b,c);
System.out.println("main 끝!!");
}
}
/*
* 출력 결과
* Exception in thread "main" java.lang.ArithmeticException: / by zero
* at com.skcc.exception.ExceptionTest1.main(ExceptionTest1.java:36)
*
* ArithmeticException: / by zero가 나오면서 종료 ("내가 출력 될까요?" 나오지 않음.)
*/
출처 : http://egloos.zum.com/hanvic/v/3299477
'JAVA > Java' 카테고리의 다른 글
[JAVA] jdk 설치 환경변수 설정 (0) | 2019.09.30 |
---|---|
openssl AES 모드 : ECB,CBC,CFB,OFB,CTR (0) | 2019.04.02 |
AES 128비트 암호화(ECB 모드, PKCS5Padding) (0) | 2019.04.02 |
스프링에서 사용자(client) IP 가져오기 (0) | 2019.01.03 |
MSSQL JAVA 연동하기(JDBC) (2) | 2019.01.03 |
중복 로그인 방지 로직 (1) | 2019.01.03 |
로그인시 아이디가 같은 사용중인 아이디 Session 끊기 (0) | 2019.01.02 |
Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리 (0) | 2018.12.05 |