Exception 처리 질문 드립니다.
227
작성한 질문수 75
강사님 안녕하세요.
강사님 강좌 중 이번이 세번째 수강인데 첫질문 하나 남겨 봅니다.
Controller 로직에서 에러가 발견되면 ResponseEntity 에 에러코드를 기록해서 응답을 하는 부분은 이해를 했는데요.
만약 Service 로직에서 에러가 발생하면 해당 에러를 어떻게 Controller 단의 ResponseEntity 에 기록해 주는 게 좋을까요?
Controller 에서 Service 호출 시에 Try/Catch 로 감싸야 하는 것인지..
좋은 가이드를 간략하게라도 부탁드려봅니다.
답변 1
0
안녕하세요.
해당 서비스도 컨트롤러와 마찬가지로, 진입 지점이 사실상 컨트롤러입니다. 컨트롤러에 요청이 들어왔고, 그 요청을 처리하다가 서비스를 사용하게 된거니까요. 그래서 컨트롤러에서 에러를 처리하듯이 처리하면 됩니다.
다만, 서비스 로직에서 정말로 예외를 던져야 하는 경우가 맞는지 많이 고민해 보시는게 좋습니다. 적잘한 메시지를 리턴해 줘야 하는 경우는 아닌지, 재시도 할 수 있는 상황은 아닌지 등 예외를 던지는건 어디까지나 최후의 선택이 되어야 합니다.
웹 애플리케이션의 로직을 아주 단순화 시켜서 입력(컨트롤러) -> 처리(서비스) -> 출력(컨트롤러) 과정으로 나누었을 때 처리 과정까지 왔다면 최소한 입력은 정확했다는 이야기인데 정확한 입력값들을 받았음에도 에러가 발생한다? 물론 그런 경우가 있을 수는 있지만 최대한 서비스에서 로직을 처리하기 전에 컨트롤러에서 입력값 에러에 대한 경우를 걸러내서 빨리 예외를 던지고, 그 부분을 지나왔으면 가급적이면 예외를 던지는 방법 대신 로직으로 처리하는게 좋습니다만, 뭐 경우에 따라서는 예외를 쓸 수도 있긴하죠. 하지만 예외는 스택트레이스를 캡춰 하는 등 비용이 비싼 오퍼레이션입니다. 따라서 성능을 감안해서라도 예외를 쓰기 보다는 로직으로 풀어내는게 바람직합니다.
Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter
0
73
1
junit5 사용하시는 분들
0
87
1
자바 빈 스펙을 준수하는지 체크하는 테스트
0
236
2
REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러
0
242
1
스프링 부트 3버전에서의 실습
0
190
1
java.lang.AssertionError: Status
0
531
2
spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.
0
287
1
섹션2 201응답받기 부분 테스트 404에러 질문입니다
0
741
1
강의 자료가 404입니다 확인 부탁 드려요!
0
477
1
연동 DB문의
0
358
1
이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문
0
505
1
(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우
0
380
0
maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문
0
621
1
테스트 오류 질문드립니다.
0
512
1
docs 요청값이 반영이 안되네요... (해결)
-1
394
1
psql 적용 후 에러
0
818
2
mvn package 시 다음과 같은 에러가 나시면
0
765
2
Event에 Account manager를 추가했으면 문서화 필요
0
274
1
2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~
1
473
1
asciidoc 추가 스니펫 에러 해결법
0
400
1
_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.
0
424
3
깃랩 처음 사용자를 위한 index.adoc raw 보는 법
0
332
1
eclipse 쓰시는 분을 위한 maven-resources-plugin 팁
0
333
1
부트 + jupiter 인 경우 설정법
0
342
1





