던진다, 발생한 예외 상황을 다른 클래스로 던진다는 의미의 키워드이다.
exception 처리에 대한 부분을 해당 오류가 발생한 부분이 아닌, 해당 오류를 발생시킨 함수(혹은 그러한 인자를 전달한 클래스 등)에 exception 처리를 넘기는 키워드이다.
throws 키워드는, 오류를 넘기는(받는) 클래스 상에서 try-catch 문으로 해당 오류를 처리하는 방식으로 활용할 수 있다.
public class exception{
public void main(String[] args){
int i = 10;
int j = 0;
int k = divide(i, j); //메소드 호출
}
public int divide(int i, int j){
int k = i/j;
}
}
위와 같이 일반적인 방법으로 클래스를 선언하고 메소드를 정의한 후 실행한다면, 시스템 예외가 발생한다.
이에 대해 throws, try-catch 구문을 사용하여 예외처리를 아래와 같이 할 수 있다.
public class exception{
public void main(String[] args){
int i = 10;
int j = 0;
try{
int k = divide(i, j);
}catch(ArithmeticException e){
System.out.println(e.toString());
}
}
public int divide(int i, int j) throws ArithmeticException{
return k
}
}
throws에서 선언한 exception이 내부 메소드에서 발생한다면, 해당 메소드를 호출하거나 인자를 전달한 클래스에서 해당 오류를 처리하도록 유도한다.
따라서 이 유도로 인해, main 함수내에서 divide 호출한 시점에서 오류를 다시 받아오므로 try-catch 문을 통해 그대로 오류를 처리하게 된다.