Posted on 2011-05-31 11:22
zuora 阅读(92)
评论(0) 编辑 收藏
在Force.com
开发过程中,我们会定义自己的异常,然后,在可能发生异常的地方,抛出自定义的异常。基于Java等语言的开发经验,我们经常会定义一个异常,假设这个异常会包括异常编码及异常信息等等。
定义伪码:
global class CustomException extends
Exception {
// 异常编码
global final String code{get; private set;}
// 异常信息
global final String message{get; private set;}
// 构造方法
public CustomException(String code,
String message) {
this.code = code;
this.message =
message;
}
}
使用伪码:
try{
// …
}catch(Exception ex){
// 拦截所有异常,然后,封装成自定义的异常抛出
throw new CustomException(“1001”, “I am tony.”);
} |
运行结果:
当打印Exception的Message时,并不是构造异常时的“I am tony.”。参见如下截图:
经过Debug代码,发现打印的Message实际是其父类的Message信息,也就是说Apex打印异常时,默认会引用其父类的Message成员,并不是自定义Exception的Message,因此,如果希望打印自己的Message,需要在构造自定义异常时,重置其父类Message成员。
调整伪码:
global class CustomException extends Exception {
// 异常编码
global final String code{get; private set;}
// 构造方法
public CustomException(String code, String message) {
this.code = code;
// 重置父Message
this.setMessage(message);
}
} |
再次运行:
结果会按预期的Message进行打印,即“I am tony.”。
在Force.com开发过程中,发现Exception定义上与Java等有一些差异,特意将这些差异总结出来,为后续的朋友提供一点点个人经验。