Catching Exceptions

DEX450 - Module 7: DML Essentials

📄 第 207 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊Salesforce中的DML操作和异常处理。首先,我们来看一个常见的场景:当你使用`Database.insert(X, false)`这样的语句时,你可能会注意到,即使有些记录插入失败了,代码也不会抛出异常。这是为什么呢? 这是因为`Database.insert(X, false)`中的`false`参数告诉Salesforce,即使有记录插入失败,也不要立即抛出异常。相反,它会继续尝试插入所有记录,并将所有失败的记录和相关的错误信息收集起来,放在一个叫做`DMLException`的对象中。这样,你就可以在操作完成后,统一处理这些失败的记录和错误。 接下来,我们来看另一个教学点。如果你希望执行一个“全有或全无”的DML操作,也就是说,要么所有记录都成功插入,要么一个都不插入,那么你应该使用`Database.insert(X, true)`。在这种情况下,如果任何一个记录插入失败,Salesforce会立即抛出异常,并且整个操作会回滚,就像什么都没发生过一样。这种方式被称为“优雅的失败”,因为它确保了数据的一致性,避免了部分成功的情况。 总结一下,`Database.insert(X, false)`允许你处理部分失败的记录,而`Database.insert(X, true)`则确保要么全部成功,要么全部失败。根据你的业务需求,选择合适的方式来处理DML操作,是非常重要的。 希望这个解释对你们有帮助!如果有任何问题,随时提问哦!