자바의 예외
- 체크 예외
- 에러
- 언체크 예외
에러는 시스템에 비정상적인 상황이 발생했을 경우에 발생한다.
ex) 메모리 부족 or 스택 오버 플로우와 같이 복구할 수 없는것들 -> 개발자가 예측하기 쉽지않고 처리할 수 있는 방법도 없다.
프로그램 실행 중에 개발자의 실수로 예기치 않은 상황이 발생했을 때..
ex) 배열의 범위를 벗어난 ArrayIndexOutOfBoundsException, 값이 null 인 nullPointerException
프로그램에서 심각한 오류여서 복구 할 수없는 수준이 아니다!!.
예외에는 2가지로 나눠진다.
1. 체크 예외 : RuntimeException의 하위 클래스가 아닌 Exception클래스의 하위 클래스들
2. 언체크 예외 : RuntimeException의 하위 클래스들
RuntimeException의 하위 클래스가 아닌 Exception클래스의 하위 클래스들
특징 : 반드시 에러 처리를 해야된다..!!(try/ catch or throw)
RuntimeException의 하위 클래스들을 의미!
에러처리를 강제로 하지 않는다..
실행중에 발생할 수 있는 예외
컴파일러가 에러처리를 확인하지 않는 RuntimeException 클래스들은 unchecked 예외라고 부르고 예외처리를 확인하는 Exception 클래스들은 checked 예외라고 부릅니다.
스프링의 트랜잭션 기본적인 동작은 RuntimeException은 Roll-back을 하지만 UncheckException은 Roll-back을 하지 않는다. --> 하지만 스프링에서는 rollback옵션을 설정할 수 있다. 위의 표는 그래서 스프링과 자바를 동일시 한다면 맞는 말이지만 트랜잭션처리부분은 틀린 말이다