Java

Exception 클래스 개념 및 종류

seco 2021. 8. 22. 03:00

Exception

- 어떤 원인에 의해 오동작하거나 비정상적으로 종료되는 경우

 

Exception 클래스

- default는 checked exception이다.

- Throwable 클래스의 자식 클래스다.

 

java.lang.Exception

모든 예외 클래스는 Exception 클래스를 상속받는다.

 

예외 클래스의 계층

- Error 계열 : OutOfMemoryError

- Checked exception 계열 : Object > Throwable > Exception > SQLException, IOExcpetion > FileNotFoundException

- Unchecked exception 계열 : RuntimeException > ArithmeticException, OutOfBoundException

 

Checked exception과 Unchecked exception

- Checked Exception : 예외에 대한 대처 코드가 없으면 컴파일이 진행되지 않음

- Unchecked Exception : (RuntimeException의 하위 클래스) 예외에 대한 대처 코드가 없더라도 컴파일은 진행됨

구분 Checked Exception Unchecked Exception
확인 시점 컴파일 시점 런타임 시점
트랜잭션 처리 반드시 예외 처리 필수 명시적으로 할 필요 없음
처리 여부 예외 발생 시 롤백하지 않는다. 예외 발생시 롤백해야 한다.

 

Exception 객체의 정보 활용

- Throwable의 주요 메서드

메서드 설명
public String getMessage() 발생된 예외에 대한 구체적인 메세지를 반환한다.
public Throwable getCause() 예외의 원인이 되는 Throwable 객체 또는 null 을 반환한다.
public void printStackTrace() 예외가 발생된 메서드가 호출되기까지의 메서드 호출 스택을 출력한다.
디버깅의 수단으로 주로 사용된다.

 

Checked Exception의 종류

FileNotFoundException 존재하지 않는 파일을 처리하려 할 때 발생
ClassNotFoundException 클래스를 찾지 못할 때 발생
NoSuchMethodException 지정된 메소드가 없을 때 발생
IOException 입출력 시에 지정한 파일이 시스템에 존재하지 않으면 발생
InterruptedIOException 입출력 처리가 중단 되었을 때 발생

 

Unchecked Exception의 종류(RuntimeException)

(Array)IndexOutOfBoundsException 배열에서 인덱스 범위를 초과하여 사용할 때 발생, 배열의 인덱스가 배열의 길이를 넘을 때 발생
NullPointerException 객체 참조가 없을 때 발생하는 예외, 값이 null인 참조변수의 멤버를 호출할 때 발생
ArithmeticException 정수를 0으로 나누려 했을 때 발생
ClassCastException 클래스의 형변환을 잘못했을 때 발생
IllegalArgumentException 메서드에 유형에 일치하지 않는 매개변수를 전달하는 경우 발생