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 | 메서드에 유형에 일치하지 않는 매개변수를 전달하는 경우 발생 |