Exception(예외)
Java 에서 발생하는 예외에 대해서 알아보고 해결 방법에 대해 알아보자
Last updated
Java 에서 발생하는 예외에 대해서 알아보고 해결 방법에 대해 알아보자
Last updated
모든 예외 클래스는 Throwable을 상속 받아 구현되어 있다.
Throwable 클래스는 직접 사용하는 경우는 거의 없다.
Throwable 타입과 이 클래스를 상속받은 서브 타입만이 자바 가상 머신이나 throw 키워드에 의해 예외가 발생할 수 있다.
Error는 JVM에서 발생하는 에러로 개발자가 대응할 수 없으며 시스템 레벨에서 처리가 가능하다.
Exception은 개발자가 구현한 로직에서 발생하며 예외 처리에 대한 다양한 전략이 존재한다.
Exception의 자식 클래스 중 RuntimeException을 제외한 모든 클래스는 CheckedException이며, RuntimeException과 그의 자식 클래스들을 Unchecked Exception이라 부른다.
예외처리 필수
컴파일 타임에서 예외처리 되지 않을 경우 컴파일 오류 발생
JVM 외부와 통신(네트워크, 파일시스템 등) 관련 기능에서 예외 발생
예외처리를 컴파일 단계에서 확인하지 않는다.
실행 중에 발생하는 에러로 Runtime Exception이라 명명한다.
구분
Checked Exception
UnChecked Exception
확인 시점
컴파일(Compile) 시점
런타임(Runtime) 시점
처리 여부
반드시 예외 처리해야 한다
명시적으로 하지 않아도 된다
트랜잭션 처리
예외 발생시 롤백(rollback)되지 않는다
예외 발생시 롤백(rollback)해야 한다
종류
IOException
ClassNotFoundException
NullPointerException
ClassCastException
try, catch, finally 블록을 통해 예외가 발생할 경우 대처한다.
throws 하여 예외 처리를 상위에 위임한다.
예외가 발생하면 catch 블록 안에서 내부 규정에 통용되는 예외로 전환한다.