作为一名小白经常是需要与异常交锋的,为了使我们再次遇到它时,不会慌张,不会乱阵脚,我们就需要对异常了如指掌,能够坦然面对,解决得游刃有余.遇到异常,不要慌张,要心平气和的去查找原因,俗话说的好,没有bug的程序不是好程序 , 如果没有bug 大部分程序员估计也就有可能失业了,程序员职业都有可能加入兼职的大潮流中...
话不多说上异常 :
1. UNABLE_TO_LOCK_ROW
产生于死锁, 一般是两种场景造成:两个transactions(事务)同时对一条记录进行更新;或者一个transactions超时。
2. STRING_TOO_LONG
前台没有做字段长度限制,导致后台提交报错。
3. LIMIT_EXCEEDED
1 . Too many SOQL queries: 101
一个transaction只能一次执行100条SOQL,检查是否SOQL或DML写在循环中;如果需要更改上下文,可以使用@future注释来异步运行代码。
需要注意的是,一个trigger里面执行的属于一个transaction。
不知道小伙伴们有没有经常遇到这个异常,小喵可是经常遇到┭┮﹏┭┮
2. Too many DML rows: 10001
一个transaction只能一次更新10,000条记录,可以尝试用batch代替apex操作。
3. Apex CPU time limit exceeded
SF服务器cpu同步执行最大延时10s,异步60s。尝试多使用基于query的map结构;尝试是否可以异步执行一些代码(@future);尝试合并SOQL;尝试减少数据的循坏遍历。
4. CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY
没有权限创建,更新某条记录(检查字段,对象权限)。
5. INVALID_FIELD_FOR_INSERT_UPDATE
常见于给字段赋非法值,给只读字段赋值,对父对象记录DML操作.
6. INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST
给picklist类型字段赋空值或限制以外值。
7. FIELD_FILTER_VALIDATION_EXCEPTION
是否更新操作违背了字段的lookp filter规则。
8. FIELD_CUSTOM_VALIDATION_EXCEPTION
无法定义违反字段完整性规则的自定义验证公式。
9.INVALID_TYPE_ON_FIELD_IN_RECORD
指定的值对于指定字段的类型无效。
小喵记得遇到这个错误的时候是因为在进程生成器里面用公式给字段赋值时没有判断非空所以才遇到这个错误的,因为字段是个复选框,当时小喵想着复选框的值不是true就是false ,没有想到null,结果导致出现了这个异常,后来还是在前辈的提点下,在公式里判断了一下为null则给它赋值false;
Example :
A.IsError__c = IF(IsError__c == null,false,IsError__c);
10. No more than one executeBatch can be called from within a testmethod
在一个测试方法中只能调用一个executeBatch。请确保从start方法返回的iterable与批大小匹配,从而导致一次executeBatch调用。
11. Database.executeBatch cannot be called from a batch or future method
这个错误是小喵在做Batch链的时候报的错误,原因是API版本太低了,不支持进行Batch链的操作┭┮﹏┭┮ , salesforce 在 Win13 时才引入了通过Batch的finish方法实现Batch链的这一功能.而Win 13 对应的API版本是 26.0 , 因此我们的Batch批处理类将需要使用该版本或更高版本才能使用Batch链。当时,小喵的Batch链里中间的一个Batch的API版本刚好是25.0,因此在运行时出现了这个错误。
更多异常小伙伴们可以查看 ↓
<<异常或代码报错汇总>>
<<Exception Class and Built-In Exceptions>>
今天分享就到这里了
(^_^)~喵~!!