Wicket - 在异常处理后正确清理页面组件

时间:2013-02-15 10:58:06

标签: java wicket wicket-1.5

在我的wicket应用程序中,页面导航是通过在onClick()方法上调用新页面的构造函数来创建新的Page对象。如下。

DisplayItem.add(new Link("edit") { 
@Override
   public void onClick() {
    try{
    setResponsePage(new ReportPage(object, getPageReference()));
       } catch ( CustomException e){
          /// set some feedback message
        }
   }
});

ReportPage 有几个LoadableDetachableModels,PageableListViews,Panels,Fragments等。我在 ReportPage 的构造函数中进行异常处理,如果发生异常则抛出它。见下面。 (部分代码)

 public ReportPage(final Objectm, final PageReference pr) throws CustomException{

try{
final LoadableDetachableModel<MaintReport> ldm = 
         new LoadableDetachableModel<MaintReport>() {

            @Override
            protected MaintReport load() {
                return new MaintReport();
            }
        };

/*

Several LoadableDetachableModels, PageableListViews, Panels, Fragments  etc.

*/ 


} catch ( Exception ex){
// create Custom Exception 

} finally {

 // Clean up of stuff 

}

因此,如果在构建页面时发生异常。我应该如何清理(在最终块中)? 。我应该将所有单个对象设置为null吗? 是否有任何Wicket方法来垃圾收集(或向GC发送信号)?

谢谢

1 个答案:

答案 0 :(得分:1)

在构造函数中抛出异常表单会立即使半初始化对象符合垃圾回收的条件。除非你通过在抛出异常之前将对象添加到另一个对象拥有的集合中来某种方式阻止它,否则不必担心该对象及其字段的释放。您仍然需要释放可能已经分配的任何非托管资源(例如文件句柄),就像通常在finally块中那样。