SpringBoot中统一处理异常的响应问题
一、代码如下@ControllerAdvice
public class GlobalException {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result exceptionHandler( Exception e) {
return new Result(500,e.getMessage());
}
}
以上代码过滤器中抛出的异常无法被异常处理类捕获
在过滤器中我们可以严格的在可能出现异常的地方,用try,catch进行捕获,然后我们通过请求转发的方式转发到对应的Controller上
try {
id = JwtUtils.checkToken(token);
}catch (Exception e){
// 将错误信息封装在request中
request.setAttribute("exception", e);
// 请求转发
request.getRequestDispatcher("/filterGlobalException").forward(request, response);
}
@RestController
public class FilterGlobalException {
@RequestMapping(path = "/filterGlobalException")
public void filterGlobalException(HttpServletRequest request) {
Exception exception = (Exception) request.getAttribute("exception");
if (exception!=null){
throw new RuntimeException(exception.getMessage());
}
}
}



