throws는 예외가 발생했을 때 예외를 호출한 쪽에서 처리하도록 던져준다.
package Java02;
public class ThrowsExam {
public static void main(String[] args) {
// 정수에 값 넣기
int i = 10;
int j = 0;
int k = divide(i, j);
System.out.println(k);
}
// 정수 값 2개를 입력받고 그 정수를 나누어서 결과를 리턴하는 divide라는 메서드 정의
public static int divide(int i, int j) {
int k = i / j;
return k;
}
}
실행 시 아래와 같이 오류가 발생
divide 메소드 내부에서 ArithmeticException이 발생하지 않게 하려면
해당 라인에서 try{}으로 감싸서 오류를 처리를 해야만 한다.
하지만 오류를 처리하지 않고 divide메소드를 호출한 쪽에게 오류를 처리하라라고 떠넘길 수 있다.
내가 처리하지 않고 나를 호출 한쪽에서 처리하세요!
" throws " 키워드
메소드 선언부에다 throws 발생할 Exception이라고 적어주면 된다.
-- 수정
// 정수 값 2개를 입력받고 그 정수를 나누어서 결과를 리턴하는 divide라는 메서드 정의
public static int divide(int i, int j) throws ArithmeticException {
int k = i / j;
return k;
}
나는 오류를 넘길 거예요~ 어떤 오류를 넘길 거냐면 ArithmeticException이라는 오류를 넘길 거예요.
-> 이 메소드 내에서 수행하다가 발생되는 오류를 메소드 내에서 처리하지 않고,
이 메소드를 호출한 쪽에서 처리할 수 있도록 오류를 떠넘기는 것.
이렇게 넘겨줄 때에서 오류를 하나만 넘길 수 있는 게 아니라 ', '로 여러 개도 가능하다.
-- ', ' 예시
// 정수 값 2개를 입력받고 그 정수를 나누어서 결과를 리턴하는 divide라는 메서드 정의
public static int divide(int i, int j) throws ArithmeticException, ClassCastException {
int k = i / j;
return k;
}
-- 전체 코드
package Java02;
public class ThrowsExam {
public static void main(String[] args) {
// 정수에 값 넣기
int i = 10;
int j = 0;
// 오류를 처리해야하는 부분
try {
int k = divide(i, j);
System.out.println(k);
} catch (ArithmeticException e) {
// 오류의 정보르 출력
System.out.println(e.toString());
}
}
// 정수 값 2개를 입력받고 그 정수를 나누어서 결과를 리턴하는 divide라는 메서드 정의
public static int divide(int i, int j) throws ArithmeticException {
int k = i / j;
return k;
}
}
-- 실행결과
프로그램이 종료되는 것이 아니라 오류를 잘 처리하고 있는 것을 확인할 수 있다.
'PL(ProgrammingLanguage) > JAVA' 카테고리의 다른 글
사용자 정의 Exception (0) | 2021.10.16 |
---|---|
Exception 발생시키기 (0) | 2021.10.16 |
Exception - 예외 (0) | 2021.10.13 |
내부클래스 - local 클래스 / 익명클래스 (0) | 2021.10.13 |
내부 클래스 - instance 클래스/ static 클래스 (0) | 2021.10.12 |