Vaadin 10+:如何处理未捕获的异常?

时间:2018-11-19 21:55:17

标签: vaadin vaadin10

在Vaadin 8中:

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

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

4 个答案:

答案 0 :(得分:2)

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

 const output = input.split("").map(char => dict[char]).join("");

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

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

答案 1 :(得分:2)

如果您使用的是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
            });
        });
    }
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  • 路由器异常处理,在构建视图的导航阶段触发,以及
  • Session 的 ErrorHandler,在视图呈现后触发。

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

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