자바에서 예외처리
콘솔에서 숫자값만을 입력 받아야하는 프로그램이 있다고 칩시다.
예)
1. 추가 2. 삭제 3.목록 4. 종료 (입력하시오) -> ??
??안에 숫자값만 입력되야 합니다. 그런데 사용자가 실수로 다른 키를 눌렀을때
q라거나.. 엔터를 쳐버렸다던가..
그렇게 숫자값이 아닌 다른 값이 입력되었을때, 혹은 이와 유사한 상황 위해 자바에서는 예외처리라는 개념을 지원합니다..
이런 예외상황을 처리하는것이 try catch문이죠.
그런데 이런 예외를 try catch문을 써서 처리해주지 않고, 자신을 호출하는 메소드에게 전가 시켜주는 것이 있는데..
그것이 throws라는 예약어입니다.
(참고 : main()에서 throws 를 쓰면 jvm에게 예외가 전가됩니다.)
throw 와 throws
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라는 예약어가 있는데 이것은 예외가 발생하던 발생하지 않던 실행됩니다.
'Document' 카테고리의 다른 글
JSAPI란.. (0) | 2008.07.24 |
---|---|
Thread (0) | 2008.07.22 |
Java Collection 중 자주 사용하는 것 (0) | 2008.07.15 |
Collection Framework (0) | 2008.07.15 |
List, Map,Set (0) | 2008.07.15 |