kkkkkkkkkkkk
kkkkk
kkkkkkkkkkkk
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS & OS
    • Algorithms
    • Laguage
    • Book
      • 객체지향의 사실과 오해
      • Effective Java
      • Spring boot 와 AWS로 혼자 구현하는 ..
      • 도메인 주도 계발 시작하기
    • DB
    • Spring
    • Spring Boot
    • JPA
    • Git
    • Clean Code
    • HTTP

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향 프로그래밍
  • 책임
  • 설계 원칙
  • 응집도
  • 역할
  • 결합도

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
kkkkkkkkkkkk

kkkkk

[Spring Boot] 예외처리를 왜 해야하고 어떻게 처리할까?
Spring Boot

[Spring Boot] 예외처리를 왜 해야하고 어떻게 처리할까?

2022. 7. 29. 17:55

예외와 오류에 대해 알아보자.

먼저 예외(Exception) 과 오류(Error)는 다르다는 것을 명심하자.

오류(Error)는 시스템이 정상 활동 되다가 갑자기 종료되거나 서비스가 작동작하지 않고 먹통 상태가 되는 심각한 영향을 준다.

 

오류 처리를 왜 해야하는가?

2가지만 명심하자.

  • 시간
  • 돈

오류 해결에 의해 시간과 돈이 들어간다. 서비스가 먹통이 되면 엄청난 손실이 올 것이다.

예외(Exception)는 개발자 즉, 프로그램을 만든 사람의 실수에서 나온다. 개발 당시에 생각하지 못한 부분에서 프로그램에 잘못된 영향을 준다.

 

예외 처리를 왜 해야하는가?

  • 사용자에 임시적인 가이드를 제공

예외도 서비스를 사용하는 사람 입장에서 불편함이 있겠지만 프로그램이 완전히 죽는 것 보단 나을 것이다.

 

예외, Error 처리 방법

  1. Error Response는 객체를 만들어 통일하게 사용한다.

 

  1. @ControlAdivce를 통해 모든 예외를 한곳에서 핸들링 한다. (전역)

 

각각의 Controller 마다 에러처리를 만들게 되면 유지보수하기 힘들어진다. 하지만 @ControlAdivce를 통해 통일성 있게 처리하면 통일하게 예외처리가 가능해진다.

RestController의 에러는 @RestControllerAdvice로 핸들링 할 수 있다.

 

  1. Error Code를 정의하여 처리한다.

 

예외를 던진 때의 메시지와 에러 타입들이 다를 것이고 동일 한 부분도 있을 것이다. 하지만 흩어져 있는 코드 하나의 열거타입에 관리하여 이를 통해 사용하면 통일성 있고 명확하게 처리할 수 있을 것이다.

 

  1. 요구사항에 맞지 않는 경우에는 Business Exception을 따로 만들어 처리한다.

 

Business Exception을 최상위로 만들고 상속받아 사용하자.

 

최상위 클래스를 상속받아 사용하면 각자의 예외에 대한 책임을 가질 수 있고 가독성도 좋아진다.

또한 예외 처리할 때 최상위 객체를 사용하여 통일하게 예외를 처리할 수 있다.

 

.

 

 

 

 

 

 

 

 

 

 

참조 : https://its-ward.tistory.com/m/entry/%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%AD%90-%EA%B3%A0%EB%AF%BC%ED%95%B4-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC%EC%99%80-%EC%98%A4%EB%A5%98-%EC%B2%98%EB%A6%AC

'Spring Boot' 카테고리의 다른 글

@Builder 사용시 초기화 필드는 어떻게 될까?  (0) 2022.09.05
[Spring boot] 순환 참조 이슈  (0) 2022.08.12
[Spring Boot] Spring 에서 비동기 처리 방식은 어떻게 하고 왜 사용해야 할까?  (0) 2022.07.31
[Spring Boot] Interceptor 는 어떻게 사용하고 왜 사용해야 할까?  (0) 2022.07.30
[Spring Boot] Filter를 왜 사용해야하고 어떻게 사용하는 걸까?  (0) 2022.07.30
[Spring Boot] Validation을 왜 해야하고 어떻게 할까?  (0) 2022.07.29
ModelMapper  (0) 2022.07.20
[Spring Boot] Spring Dependency Injection 동작 원리와 Ioc Container를 알아보자  (0) 2022.03.02
    'Spring Boot' 카테고리의 다른 글
    • [Spring Boot] Filter를 왜 사용해야하고 어떻게 사용하는 걸까?
    • [Spring Boot] Validation을 왜 해야하고 어떻게 할까?
    • ModelMapper
    • [Spring Boot] Spring Dependency Injection 동작 원리와 Ioc Container를 알아보자
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바