| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 백준
- Java
- 파이썬
- JavaScript
- Spring
- 컴퓨터구조
- Proxy
- MySQL
- spring webflux
- JPA
- 자료구조
- design pattern
- MSA
- react
- IT
- 자바
- 알고리즘
- Data Structure
- redis
- mongoDB
- Kafka
- c언어
- Heap
- C
- 운영체제
- OS
- Algorithm
- 디자인 패턴
- 네트워크
- Galera Cluster
Archives
- Today
- Total
시냅스
Java 예외 관련 정리 본문

- 예외도 객체이므로 최상위 부모는 Object이다.
- Error
- 메모리 부족이나 심각한 시스템 오류이다.
- catch 해서는 안된다.
- 언체크 예외이다.
- Exception
- 체크 예외이다.
- RuntimeException 을 제외한 모두 하위는 컴파일러가 체크하는 체크 예외이다.
- RuntimeException
- 언체크 예외이다.
- RuntimeException 하위 모두 언체크 예외이다.
예외 기본 규칙
예외 처리 (catch)

예외 던짐 (throw)

- 예외는 잡아서 처리하거나 던져야 한다.
- 예외는 잡거나 던질 때 지정한 예외뿐만 아니라 그 예외의 자식들도 함께 처리된다.
- 예외를 처리하지 못하고 계속 던지면 main으로 넘어와 시스템이 종료된다.
체크 예외
- 체크 예외는 예외를 잡아서 처리할 수 없을 때 예외를 밖으로 던지는 throws 예외를 필수로 선언해야 한다.
- 예외를 잡아서 처리하지 않으면 항상 throws에 던지는 예외를 선언해야 한다.
- 컴파일러를 통해 throws 예외를 선언하지 않으면 오류로 알려준다.
- 다만 모든 체크 예외를 반드시 잡거나 던지도록 해야 하기 때문에 번거롭다.
- 또한 throws 사용하는 선언해야 하기 때문에 의존관계에 대한 문제가 발생한다.
- 만약 예외가 java.sql.SQLException 이라면 service, controller 계층에서도 throws SQLException을 선언해야 한다.
언체크 예외
- RuntimeException 과 하위 예외는 모두 언체크 예외이다.
- 컴파일러가 예외를 체크하지 않는다.
- 예외를 던지는 throws 를 선언하지 않고 생략할 수 있다.
- throws 예외를 생략하여 쓰고 싶지 않은 예외를 무시할 수 있다.
- 실수로 예외를 누락할 수 있다는 단점이 있다.
스프링 예외 추상화

- 스프링은 어떤 기술을 사용하던 제공하는 예외를 통해 추상화를 제공한다.
- JDBC나 JPA에서 발생하는 예외 또한 스프링이 제공하는 예외로 변환하는 역할을 한다.
- transient 예외
- 일시적 예외로 다시 시도했을 때 성공 가능성이 있다.
- 쿼리 타임 아웃, 락과 관련된 오류이다.
- Nontransient 예외
- 일시적이지 않은 예외이다.
- SQL 문법 오류, 데이터베이스 제약조건 위배 등이 잇다.
- 이러한 예외는 예외 변환기를 통해 확인할 수 있다.
catch (SQLException e) {
SQLExceptionTranslator exTranslator = new SQLErrorCodeSQLExceptionTranslator(dataSource);
//org.springframework.jdbc.BadSqlGrammarException
DataAccessException resultEx = exTranslator.translate("select", sql, e);
log.info("resultEx", resultEx);
}
'Java, Spring' 카테고리의 다른 글
| Spring MyBatis 정리 (0) | 2022.09.03 |
|---|---|
| Spring JdbcTemplate 정리 (0) | 2022.09.02 |
| Java 트랜잭션 관련 정리 (0) | 2022.08.25 |
| Java 커넥션 풀과 데이터 소스 (0) | 2022.08.25 |
| Java - JDBC 정리 (2) | 2022.08.24 |
Comments