사진 출처 : https://namu.wiki/
> throws는 예외가 발생했을 떄 예외를 호출한 쪽에서 처리하도록 던져준다.
divide 함수에서 int k를 연산한 후 반환하지만, main에서 i를 0으로 나누고 있기에 에러가 발생한다.
여기서 이 ArithmeticException이란 어떤 에러를 나타낼까?
- 존재하지 않는 파일에 접근
- 정수를 0으로 나눔
- 배열 인덱스 잘못 허용하는 경우
등등.....
다시 돌아와 소스코드를 고쳐주자면
public class ExceptionExam2{
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("0으로 나눌수 없습니다.");
}
}
public static int divide(int i, int j) throws ArithmeticException{
int k = i / j;
return k;
}
}
divide 함수에 throw를 사용함으로써 main에서 호출한 쪽으로 넘겨주고 메인에서 try, catch문을 활용해준다면, 에러가 걸리진 않고 catch문에서 에러처리 대신 선언한 출력문이 출력될 것이다.