在 Vaadin 8 中:
UI.getCurrent().setErrorHandler(e -> handleError(e));
setErrorHandler
Vaadin 11 中不存在,我找不到相应的方法或文档。
在 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
有 VaadinSession::setErrorHandler 用于不是关于在路由/导航期间发生的错误,而是例如在单击时发生的错误。
如果你使用 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
});
});
}
}
在 Vaadin 10+ 中有两个错误处理入口点:
前者是在服务器因为异常而无法生成视图时触发的。后者是由来自按钮单击、其他类型的组件事件和 UI.access() 的异常触发的。