프로그램 실행 도중 오류로 인해 프로그램이 중단될 상황에서 중단되지 않고 예외처리 가능하다.
① 직접 처리
try
{
//일반적인 코드
}
catch( ... Exception 변수 ) //예외를 처리해줄 블럭
{
//예외 처리
}
catch( ... 또다른 Exception 변수 ) //예외를 처리해줄 블럭
{
//예외 처리
}
catch( ... 또다른 Exception 변수 ) //예외를 처리해줄 블럭
{
//예외 처리
}
// ★최종적으로 예상되지 못한 예외를 처리해줄 블럭
// 반드시 모든 catch의 마지막에 위치해야 한다.
catch( Exception 변수 )
{
//예외 처리
}
finally
{
//오류의 유무에 관계없이 반드시 처리/실행 해야하는 부분
//심지어 앞에서 return이 있어도 이 부분은 무조건 실행된다! ★exit는 예외!
}
Exception 은 IOException과 RuntimeException 등으로 나뉜다.
try, catch 최소한 이 두개는 있어야 예외처리의 의미가 있다.
try, finally 만 있어도 문법적인 오류는 없지만, 오류 발생시 멈춘다. 즉 예외처리가 안된다.
② 던지는 방법
class ExceptionTest
{
//throws는 메소드의 사용자들에게 이런 오류가 발생할 수 있음을 알려주는 역할을 한다.
public void exceptionThrows() throws ...Exception, ...Exception, ...Exception
{
//오류가 발생할 수 있는 일반적인 코드
}
public void exceptionReceptor() //여기에도 throws를 넣어줄 수 있다.
{
//.....
try
{
//exceptionTrhows 메소드에서 오류가 발생하면
//호출한 exceptionReceptor에서 예외를 받아오게 받아오게 되고,
//여기에서 처리해주게 된다.
this.exceptionTrhows();
}
catch( Exception e )
{
//예외 처리
}
finally
{
//처리
}
}
public static void main( String [] args )
{
//exceptionReceptor() 메소드 호출
ExceptionTest exceptionTest = new ExceptionTest();
exceptionTest.exceptionReceptor();
}
}
아니면 모를 수 있으니까.
③ 예외를 강제로 발생시키기
임의로 예외를 발생시키고 싶을 때 사용하는 키워드는 throw 이다.
IOException e = new IOExecption(); // 예외 생성.... throw e; // 예외 발생! //혹은 한 문장으로.. throw new IOEXepction();