我一直在尝试在Salesforce自定义顶点类中捕获异常,但似乎不起作用。
在这种情况下,我有一个初始化环境的控制器构造函数,我试图在构造函数中捕获异常,但是不起作用,没有捕获异常。
public MyController(){
try{
this.myVar = ApexPages.currentPage().getParameters().get('myParam');
....
}
catch( System.StringException se ){
..
}
catch( System.NullPointerException ne ){
..
}
catch( Exception e ){
..
}
....
}
答案 0 :(得分:1)
同意@mmix。
以下操作永远不会导致任何异常。
ApexPages.currentPage().getParameters().get('myParam');
实际上捕获NPE(NullPointerException)是不好的做法,因为这些是运行时异常,应该检查变量!= null OR variable == null而不是依赖于NPE异常。如果你使用像这样的try catch块,代码流将难以维护和理解。
答案 1 :(得分:0)
这里没有什么可以抓住的
如果在控制器/扩展名内, currentPage()
不为空
即使参数列表为空,
getParameters()
也不为空
get('myParam')
可能会也可能不会返回null,但无论该值是否存储在myVar中
只有当你以后尝试引用myVar的实例成员时才会获得System.NullPointerException
,即使在数据库中存储null myVar也是有效的。