在我的项目中,我使用LoadableDetachableModel如下所示。Wicket LoadableDetachableModel异常处理问题
public ReportPage(final Objectm, final PageReference pr) throws CustomException{
try{
final LoadableDetachableModel<List<MaintReport>> ldm =
new LoadableDetachableModel<List<MaintReport>>() {
@Override
protected List<MaintReport>load() {
**// Some Database operations //**
return x;
}
};
/*
Several LoadableDetachableModels, PageableListViews, Panels, Fragments etc.
*/
} catch (Exception ex){
// create Custom Exception
} finally {
// Clean up of stuff
}
的问题是压倒一切的功能load()
invoolves一些数据库操作。如果从此方法抛出异常或由此方法引发异常,我可以在哪里捕获? 。看来我无法赶上。当我编写一些日志消息时,我发现在整个构造器执行之后调用方法。
我可以绝对地将数据库操作移出load()
方法。但是有没有办法做到这一点?
如果有人遇到过这种情况,如果您可以分享这些信息,那将会很棒。
是的,我试过了,但load()方法不能抛出Exception。抽象类定义不允许抛出。但是我希望整个构造函数在负载方法失败时抛出异常。 – Jay 2013-02-18 16:11:44
您可以抛出任何RuntimeException并注册一个对您的异常作出反应的RequestCycleListener。 – 2013-02-18 16:17:54
所以这意味着不可能从这个方法中抛出一个检查的异常。是的,RuntimeException和使用RequestCycleListener是我最糟糕的计划。反正谢谢。 – Jay 2013-02-18 16:23:59