Controller - Service - Repository 중 예외를 어디서 처리해야할까?
“나만(너희들은 안 하는) 할 수 있는 일은 내가 하고, 네가(자주) 하는 일이면 내가 넘겨줄게!”
하나의 계층에서 예외 처리를 모두 담당하지 않고, 모든 계층이 역할을 분담한다.
예외 발생 시 어느 한 계층에서 예외를 모두 처리하는게 아니라, 해당 계층의 역할과 관련되거나 그 계층에서만 하는 예외에 대한 처리라면 일부 처리를 해준 후에 예외를 상위 계층으로 던지다. 그리고 상위 계층은 이러한 예외 처리를 받아 예외 처리에 대해서 공통적으로 처리하면 되지 않을까?!
Service에서 예외를 모두 처리하게 될 때, HTTP Status Code를 응답으로 전해줘야할 경우를 생각하여 Controller에서 예외를 모두 처리해줘야하지 않을까라는 생각을 하게 될 수도 있다.
우리는 Runtime Exception에 대해 Custom Exception을 정의하게 되는데, 이 때 Message뿐만 아니라 HTTP Status Code도 함께 저장하는 것이다. 그럼 이를 통해 Service 계층에서 발생한 예외를 Controller 계층으로 전달하면, 적절한 응답을 제공할 수 있지 않을까?!
예외처리를 위한 사용자 정의 예외 클래스를 만들자!
그리고 각 계층에서 예외가 발생했을 경우 할 수 있는 예외처리를 하고, 필요하다면 예외 객체를 생성하여 상위 계층에 예외를 던져주자!
'언어(Language) > JAVA' 카테고리의 다른 글
[JAVA] JPA는 무엇일까? (2) | 2024.07.29 |
---|---|
[JAVA] Optional, 사용하는 이유와 메서드 5가지 (5) | 2024.07.25 |
내가 생각하는 SOLID원칙 (0) | 2024.07.12 |
[JAVA] 생성자도 상속이 된다는 입장에서 쓰는 글 (0) | 2024.07.04 |
ERROR: Exception in thread "main" java.lang.ClassCastException (0) | 2024.05.23 |