4

在 Vaadin 8 中:

UI.getCurrent().setErrorHandler(e -> handleError(e));

setErrorHandlerVaadin 11 中不存在,我找不到相应的方法或文档。

4

4 回答 4

3

在 Flow (Vaadin 10+) 中,有一种机制可以在路由器中捕获未捕获的异常。因此,您可以创建错误视图,这些视图在捕获定义的异常时显示。它们是通过实现带有异常类型的 HasErrorParameter 接口创建的。以下是 Vaadin 文档中的示例:

@Tag(Tag.DIV)
public class RouteNotFoundError extends Component
        implements HasErrorParameter<NotFoundException> {

    @Override
    public int setErrorParameter(BeforeEnterEvent event,
            ErrorParameter<NotFoundException> parameter) {
        getElement().setText("Could not navigate to '"
                    + event.getLocation().getPath() + "'");
        return HttpServletResponse.SC_NOT_FOUND;
    }
}

我建议从文档中阅读更多内容。

https://vaadin.com/docs/v11/flow/routing/tutorial-routing-exception-handling.html

于 2018-11-20T18:54:36.923 回答
2

有 VaadinSession::setErrorHandler 用于不是关于在路由/导航期间发生的错误,而是例如在单击时发生的错误。

于 2019-04-24T18:03:51.967 回答
1

如果你使用 Vaadin Spring Boot 启动器实现应该是这样的:

@SpringComponent
public class MyVaadinServiceInitListener implements VaadinServiceInitListener {

    @Override
    public void serviceInit(ServiceInitEvent event) {
        event.getSource().addSessionInitListener(e -> {
            e.getSession().setErrorHandler(errorEvent-> {
                Throwable t = errorEvent.getThrowable();
                // handle error
            });
        });
    }
}
于 2020-03-20T11:40:02.807 回答
0

在 Vaadin 10+ 中有两个错误处理入口点:

  • 路由异常处理,在构建视图时在导航阶段触发,以及
  • Session 的 ErrorHandler,在视图被渲染后触发。

前者是在服务器因为异常而无法生成视图时触发的。后者是由来自按钮单击、其他类型的组件事件和 UI.access() 的异常触发的。

有关详细信息,请参阅https://mvysny.github.io/vaadin-error-handling/ 。

于 2021-04-16T10:11:08.260 回答