gpt4 book ai didi

java - Vaadin:集中自定义异常处理

转载 作者:行者123 更新时间:2023-11-30 11:40:54 33 4
gpt4 key购买 nike

我使用 Vaadin 框架来创建我的 Web 应用程序 GUI。

我有一个 Vaadin 按钮,它的点击监听器代码可能会抛出一个应用程序自定义异常。在应用程序代码的其他地方,这个异常一直被抛回到我的自定义窗口类,在那里它被集中处理。我想在这里做一些类似的事情:在 clickListener 代码中抛出这个异常,这样我就可以在窗口类的自定义终端错误处理程序中捕获它。由于点击监听器类没有抛出任何异常,我无法在那里抛出异常,我想我将不得不在本地处理异常。因为我不想在按钮单击监听器级别处理异常,所以我想我会将其转发到我的自定义窗口类。像这样:

Button btnNew = new Button("New", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
try {
doThingThatThrowsException();
} catch (Exception exc) {
window.handleCustomException()
}
}
});

这是使用 Vaadin 集中处理自定义异常的常用方法吗?

最佳答案

我无法回答这是否是处理异常的常规方式,但我们做的事情非常相似。

根据需要执行此操作的监听器数量或频率,您还可以创建抽象监听器来为您进行委托(delegate)。

例如

abstract class BasicListener {
protected void handleThrowable(Component.Event event, Throwable throwable) {
Window window = event.getComponent().getWindow();
if (window instanceof ExceptionHandlingWindow) {
((ExceptionHandlingWindow) window).handleException(throwable);
} else {
// Log it ? DO something, anyway.
}
}
}

abstract class ExceptionHandlingButtonClickHandler extends BasicListener implements Button.ClickListener {
@Override
public void buttonClick(Button.ClickEvent event) {
try {
handleClick(event);
} catch (Throwable e) {
handleThrowable(event, e);
}
}

protected abstract void handleClick(Button.ClickEvent event);
}

Button btnNew = new Button("New", new ExceptionHandlingButtonClickHandler() {
@Override
protected void handleClick(Button.ClickEvent event) {
doThingThatThrowsException();
}
});

关于java - Vaadin:集中自定义异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498080/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com