在使用 Tapestry 创建 Web GUI 作为表示层时,我在如何处理和处理域对象抛出的检查异常方面遇到了一些难题。
假设我有一个域对象,Foo
它抛出FooException
了它的一种方法:
public class Foo {
...
public void fooMethod throws FooException() {
...
}
...
}
现在,假设我有一个 Tapestry 页面,名为Bar
where Foo
object is,例如,正在使用BeanEditor
.
现在,为了确保不传递非法值来BeanEditor
创建Foo
对象,我可以想到两种基本方法:
@Validate
使用注释 的 Tapestry 字段验证在这种情况下,如果我们可以通过正则表达式或通过限制值或执行可用的类似操作来过滤和检查输入,
@Validate
我们将在我们正在编辑的字段旁边收到一条漂亮的错误消息,并且提交将失败,从而使用户想想他在那里写了什么以及如何解决它。捕获域异常并基于它执行操作
我认为这种情况提供了更多关于可以做什么和不可以做什么的选择。例如,如果 used 需要进入
URL
并在这样做时出错,则URL
构造函数将抛出自己的MalformedURLException
. 我们可以在 Java 代码中捕获该异常,但我的问题是,下一步该做什么以及如何做?
Tapestry 是否提供处理域异常(检查和/或未检查)的任何特殊机制,除了当事情破裂时弹出的异常窗口?
有没有关于如何解决这个特定问题的模式?
您在哪里划定常见异常和普通异常(如IndexOutOfBoundsException
)和某些特定领域的异常(如 )之间的界限FooException
?
:D