2

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

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 

}

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

谢谢

4

1 回答 1

1

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

于 2013-02-17T18:15:22.787 回答