2018年sfdc工作总结_常见Salesforce 异常

经常会遇到一些SF异常的报错邮件,下面做一些常见的总结吧:

  1. UNABLE_TO_LOCK_ROW 产生于死锁,一般是两种场景造成:两个transactions同时对一条记录进行更新;或者一个transactions超时。
     
  2. STRING_TOO_LONG 前台没有做字段长度限制,导致后台提交报错。
     
  3. LIMIT_EXCEEDED 

    (一)Too many SOQL queries: 101.一个transaction只能一次执行100条SOQL,检查是否SOQL或DML写在循环中;如果需要更改上下文,可以使用@future注释来异步运行代码。
    需要注意的是,一个trigger里面执行的属于一个transaction。 

    (二)Too many DML rows: 10001 一个transaction只能一次更新10,000条记录,尝试用batch代替apex操作。

    (三)Apex CPU time limit exceeded SF服务器cpu同步执行最大延时10s,异步60s。尝试多使用基于query的map结构;尝试是否可以异步执行一些代码(@future);尝试合并SOQL;尝试减少数据的循坏遍历。

    下面顺便总结一下常见的Apex Governor Limits(在一个transaction内):

    1.一次只能同步执行100条SOQL;异步执行200条SOQL;
    2.一次SOQL只能查询50,000条数据;一次 Database.getQueryLocator只能查询10,000条数据;
    3.一条SOSL一次只能查询2000条数据;
    4.一次只能执行100条callouts (HTTP requests or Web services calls)
    5.一次只能更新10,000条记录

    详细参考:https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_apexgov.htm
     
  4. CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY 没有权限创建,更新某条记录(检查字段,对象权限)。
     
  5. INVALID_FIELD_FOR_INSERT_UPDATE 常见于给字段赋非法值,给只读字段赋值,对父对象记录DML操作。详见:https://help.salesforce.com/articleView?id=000073334&type=1
     
  6. INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST 给picklist类型字段赋空值或限制以外值。
     
  7. FIELD_FILTER_VALIDATION_EXCEPTION 是否更新操作违背了字段的lookp filter规则。
     

异常或代码报错汇总:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_concepts_core_data_objects.htm 

常见异常友好提示处理:https://www.cnblogs.com/zero-zyq/p/6143983.html 

你可能感兴趣的:(sfdc)