spring启动异常控制器示例

i7uq4tfw  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(302)

我想处理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和默认错误?

xqnpmsa8

xqnpmsa81#

Spring的默认行为 DispatcherServlet 不是扔 NoHandlerFoundException 如果找不到处理程序,它将自己处理响应。您应该能够使用上述方法捕获其他异常,但是如果您想提供自己的404响应,则需要使用 throwExceptionIfNoHandlerFound .

相关问题