我想处理SpringBoot上的错误响应。
这是我对未找到错误的默认错误响应。
{
"timestamp": "2020-12-09T02:37:03.698+00:00",
"status": 404,
"error": "Not Found",
"message": "",
"path": "/v1.0/test"}
我试图在我的自定义错误句柄控制器上捕获它,但不起作用。
@ControllerAdvice
@RestController
@RequestMapping("${server.error.path:${error.path:/error}}")
@RequiredArgsConstructor
public class ExceptionController {
private static final Logger logger = LoggerFactory.getLogger(ExceptionController.class);
private final BaseEntityVo baseEntityVo;
//uri not found
@ExceptionHandler({NoHandlerFoundException.class})
@ResponseStatus(HttpStatus.NOT_FOUND)
public BaseEntityVo notFoundException(HttpServletRequest httpServletRequest){
baseEntityVo.setError(ErrorConstant.SC_2007_URI_NOT_FOUND_ERROR.toString(httpServletRequest.getRequestURI()));
return baseEntityVo;
}
如何处理404405415500和默认错误?
1条答案
按热度按时间xqnpmsa81#
Spring的默认行为
DispatcherServlet
不是扔NoHandlerFoundException
如果找不到处理程序,它将自己处理响应。您应该能够使用上述方法捕获其他异常,但是如果您想提供自己的404响应,则需要使用throwExceptionIfNoHandlerFound
.