1

我一直在尝试在 Salesforce 自定义 apex 类中捕获异常,但似乎不起作用。

在这种情况下,我有一个初始化环境的控制器构造函数,我试图在构造函数中捕获异常,但不起作用,异常没有被捕获。

public MyController(){
  try{
    this.myVar = ApexPages.currentPage().getParameters().get('myParam');
    ....

   }
   catch( System.StringException se ){
     ..
   }
   catch( System.NullPointerException ne ){
     ..
   }
   catch( Exception e ){
     ..
   }
  ....
}
4

2 回答 2

1

同意@mmix。

以下操作永远不会导致任何异常。

ApexPages.currentPage().getParameters().get('myParam');

事实上,捕捉 NPE(NullPointerException) 是一种不好的做法,因为这些是运行时异常,应该检查变量 != null 或变量 == null 而不是依赖于 NPE 异常。如果您使用这样的 try catch 块,代码流将难以维护和理解。

于 2011-04-20T05:17:33.320 回答
0

这里没有什么可捕捉的

currentPage()如果在控制器/扩展内部,则不为空

getParameters()即使参数列表为空也不为空

get('myParam')可能会或可能不会返回 null,但无论该值是否存储在 myVar

只有当您稍后尝试引用 myVar 的实例成员时,您才会得到System.NullPointerException,即使在数据库中存储 null myVar 也是有效的。

于 2011-04-19T08:39:22.967 回答