묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
Spring boot에서 일반 예외처리와 api예외처리 한번에 하는 좋은 방법 없을까요?
@Slf4j @ControllerAdvice @RequiredArgsConstructor public class ExceptionControllerAdvisor { private final HttpServletRequest httpServletRequest; private final HttpServletResponse httpServletResponse; @ExceptionHandler(RollbackTriggeredException.class) public ResponseEntity<ErrorResponse> rollBackException(RollbackTriggeredException e) throws IOException { if (httpServletRequest.getRequestURI().startsWith("/api")) { int statusCode = e.getStatusCode(); ErrorResponse body = ErrorResponse.builder() .code(String.valueOf(statusCode)) .message(e.getMessage()) .validation(e.getValidation()) .build(); return ResponseEntity.status(statusCode) .body(body); } else { httpServletResponse.sendError(e.getStatusCode()); return null; } } } spring boot와 thymeleaf를 사용해서 이런식으로 api 요청일 경우 해당 요청 uri의 앞에 api를 넣어서 api가 앞에있으면 ResponseEntity객체를 이용해서 RuntimeException을 상속받은 커스텀 예외(RollbackTriggeredException)을 처리하고, api 가 없다면 HttpServletResponse객체의 sendError 메서드를 사용해서 에러를 발생시킨다음 Spring boot의 예외처리 매커니즘을 통해 에러페이지로 이동하도록 코드를 짜보았습니다. 하지만 else부분에 else를 작성해줘야한다는 점이 좀 좋지 않은 코드는 아닐까 하는 생각이들게 되더라고요??일반예외(페이지 이동하다 예외가 발생했을경우)와 api예외(ajax요청하다 예외가 발생했을 때)를 동시에 처리하는 좋은 방법있으면 알려주신다면 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part8: Entity Framework Core
Unhandled exception
안녕하세요. 강사님. 강의 잘 듣고 있습니다. 'CRUD 실습' 을 진행하는 과정에서 에러가 났는데, 구글신에 검색해봐도 딱히 해결법을 찾지 못해 글 남깁니다. 올려주신 코드 확인해봐도 똑같고, forceReset 이 true 면 Db 새로 잘 만드는데 forceReset 을 false 로 하고 실행하면 스샷과 같이 Exception 이 납니다. 이유가 무엇일까요..
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
http-exception.filter.ts 파일 내용 중 질문이 있습니다.
const error = exception.getResponse() as | string | { error: string; statusCode: number; message: string | string[] }; 강의 중에 http-exception.filter.ts 파일에서 error 변수를 위와 같이 할당을 하는데 as | string 뒤에 있는 타입을 { error: string, statusCode: number; message: string | string[] };로 받는데 객체의 속성들을 특별하게 넣어준 이유가 있나요? 단순히 { error: string }로만 처리해도 다른 속성 값들이 자동으로 들어오기 때문에 출력할 때는 문제가 없는 것 같은데 정확한 타입을 제공하기 위해서 라던가 등 특별한 이유가 있는지 궁금합니다.