throw는 강제로 예외를 발생시키는 것입니다.

자바에서 지원하는 Exception들을 상속받는 임의에 Exception을 만들수 있습니다.

보통 사용자정의예외라고 하는데..

사용자가 프로그램을 사용할때 개발자가 원하지 않는 요구나 특정 예외상황(키보드의 1버튼만 입력해야하는데 2를 입력했다던가...)등이 프로그램에 닥쳤을 때 강제로 사용자정의예외를 발생시킬 수 있게 해놓으므로 해서 에러메세지를 출력한다던가 상황을 제어 할 수 있는게 해놓은거죠.

발생시킨 예외는 try catch문으로 잡아줄 수 있습니다.


throws는 예외를 전가시키는 것이죠.

다시 말해 예외를 자신이 처리하지 않고, 자신을 호출하는 메소드에게 책임을 전가 하는 겁니다.


--- throw 예제 --------

class ExceptionTest{

    public void aaa() {
        Exception e = new Exception();
        throw e;                                            //Exception을 생성하고 강제로 발생시킵니다.
    }
}

위 파일을 컴파일 해보면 aaa()메소드 내에서 Exception을 처리하지 않았다는 에러메세지가 출력됩니다.

위 예제에서는 Exception이 throw를 통해 강제로 발생 되었다는 것을 알 수 있습니다.



--- throws 예제 --------

class ExceptionTest{
    public void aaa() throws Exception{      //throws를 통해 예외를 전가시킵니다.
        Exception e = new Exception();
        throw e;
    }

}

위 파일을 컴파일 해보면 에러메세지가 출력되지 않습니다.

Exception이 throws를 통해 전가 되었다는 것을 알 수 있습니다.



--- throw, throws, try catch 종합예제 --------

class ExceptionTest{

    public void aaa() throws Exception{
        Exception e = new Exception();
        throw e;
    }

    public static void main(String[] ar){
        ExceptionTest et = new ExceptionTest();
        try{
            et.aaa();
        }catch(Exception e){
            System.out.println("예외가 발생하였습니다.");
        }finally{
            System.out.println("예외가 발생하던 발생하지 않던 실행됩니다.");
        }
    }
}


위 예제에서는 aaa()메소드에서 Exception을 throw로 발생시키고, throws로 전가 시킨 후,

main()메소드에서 try catch문을 통해 Exception을 처리하였습니다.

try catch 문에 마지막 부분에 finally라는 예약어가 있는데 이것은 예외가 발생하던 발생하지 않던 실행됩니다.



[출처] : 네이버 오픈백과 및 Frosted Visuality

+ Recent posts