首页 > Spring MVC 中的全局异常处理器 中怎么知道是哪个Controller抛出的异常

Spring MVC 中的全局异常处理器 中怎么知道是哪个Controller抛出的异常

场景

利用token防止表单重复提交,由于token使用一次就失效。如果表单提交失败(比如参数错误,service异常),接收表单的Controller就会抛出异常。项目中所有异常都一个GlobalExceptionHandler中处理:

    @ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = {Throwable.class})
    @ResponseStatus(value = HttpStatus.OK)
    @ResponseBody
    public ExceptionResponse handleCommonException(Throwable e, HttpServletResponse response) {
        ExceptionResponse.create(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()), "系统错误");
    }

如果表单提交失败,controller抛出异常就会到这个方法中,我希望在这个方法中获取handler,利用handler上的注解来判断这个controller是不是需要token交验的,如果是的话就在这里重新生成token。。
现在的问题是,再这个方法中怎么知道是哪个handler抛出的异常?



这里我还真没想到怎么弄,可以考虑在Interceptor里面做,实现这个函数即可:

    @Override
    public void afterCompletion(
            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
    }

((HandlerMethod) handler).getMethod()就是controller里面的方法

【热门文章】
【热门文章】