061_Apex 异常捕捉

Trigger 中的错误处理

在 Trigger 中,我们可以为进行操作的数据进行验证,类似于验证规则。如果遇到不符合条件的数据,可以通过 addError() 函数来将错误显示给用户,并记录日志。

在如下代码中,当一个“业务机会”对象被插入或更新之前,系统会检查“金额”字段的值是否不小于1000。如果“金额”的数值小于1000,该“业务机会”记录将不能被插入或更新。

错误信息的显示适用于前端和后端:

  • 如果该记录是从用户页面修改的,则用户会看到错误信息
  • 如果该记录是从 Apex 程序中被插入或修改,则错误信息会被记录在日志中
    trigger OppyMaxAmountTrigger on Opportunity (before insert, before update) {
        for(Opportunity opp : Trigger.New) {
            if(opp.amount < 1000) {
                opp.addError('Amount should not be less than 1000!');
            }
        }
    }
    

     Apex 例如如果在批量处理的过程中 出现的某一条Error处理方式:

  •     public class LvOrderBy {
            public string fieldNameOrPath {set;get;}
            public string nullsPosition {set;get;}
            public string sortDirection {set;get;}
            private string nullsPosSOQL() {
                // Name ASC NULLS FIRST, Id ASC NULLS FIRST",
                if (nullsPosition!=null && nullsPosition!='') {
                    if ('first'.equalsIgnoreCase(nullsPosition)) {
                        return ' NULLS FIRST ';
                    } else if ('last'.equalsIgnoreCase(nullsPosition)) {
                        return ' NULLS LAST ';
                    } else {
                        throw new A('Invalid nullsPosition.[' + fieldNameOrPath + '], must be \'first\' or \'last\'');
                    }
                } else {
                    return '';
                }
            }
    

      

    public class A  extends Exception  {
    	
    	// 使用object类型作为参数,将其序列化作为message,
    	// 方便与前段JS通信(JS可以解析message,从而细化错误消息)	
    	public AZESM_CustomException(object msg) {
    		this.setMessage(JSON.serialize(msg));
    	}
    	
    }
    

      

猜你喜欢

转载自www.cnblogs.com/bandariFang/p/9628373.html