posts - 3, comments - 0, trackbacks - 0, articles - 7

Force.com Exception实践

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.”);


}








运行结果:


当打印ExceptionMessage时,并不是构造异常时的“I am tony.”。参见如下截图:




经过Debug代码,发现打印的Message实际是其父类的Message信息,也就是说Apex打印异常时,默认会引用其父类的Message成员,并不是自定义ExceptionMessage,因此,如果希望打印自己的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等有一些差异,特意将这些差异总结出来,为后续的朋友提供一点点个人经验。



只有注册用户登录后才能发表评论。


网站导航: