在自定义错误控制器中获取异常对象

时间:2019-01-21 15:28:07

标签: spring-boot

我使用的是Spring Boot,并使用AbstractErrorController编写了一个全局异常处理程序。我如何在控制器中获取异常对象?

@Controller
public class MyCustomErrorController extends AbstractErrorController {

    public MyCustomErrorController(ErrorAttributes errorAttributes) {
        super(errorAttributes);
    }

    @RequestMapping("/error")
    public void handleError(HttpServletRequest req, HttpServletResponse resp) {
        Exception e = ...; // how to get exception here
        log.error(e);
        displayError(req, resp, e);
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}

1 个答案:

答案 0 :(得分:0)

处理程序拦截由控制器生成或重新抛出的异常。它没有端点,因为它通常对应用程序中的所有控制器执行此操作。处理程序指示应用程序服务器在抛出特定的Exception时返回特定的错误。

这里是一个例子:

user["emailVerified"]

在此示例中,ApiError是一种将错误报告给UI的数据结构。该代码的作用是拦截异常“ Re​​sourceNotFoundException”,创建适当的错误数据传输对象,设置响应HttpStatus和标头,然后返回错误。

您可以在此处找到其他示例:https://github.com/otrebor/springbootseed-openshift/blob/master/src/main/java/com/company/example/springbootseed/core/errorhandling/handlers/