Anonymous Blocks

DEX455 - 运行 Apex:匿名块、触发器与执行顺序完全指南

📄 第 228 页 🎬 视频课程

课程章节介绍

我们开始今天的课程,来聊一聊 Salesforce Apex 里一个非常实用的小工具——,匿名块,。 你可以把它想象成一张“便签纸”,你临时想到了几行代码想要试试看,但又不想正儿八经地去创建一个类保存起来。这时候,匿名块就派上用场了。 它的几个最重要的特点你一定要记住: ,第一,它不会保存到系统里。, 你写的匿名块代码,只存在于你运行它的那一刻,跑完就消失了。它不是元数据,不会像类或触发器那样永久保留在组织中。所以它非常适合做临时测试、数据修补或者快速验证某个想法。 ,第二,每次运行都会重新编译。, 也就是说,你运行一次,Salesforce 就会现场把你的代码和任何引用到的类、对象编译一遍。这当然很方便,你可以随时修改随时跑。但如果同一个逻辑要被反复调用很多次,那性能就不太好了。比如你要批处理数据,还不停地用匿名块循环调用,那最好把它改成,已编译的 Apex 类,,或者暴露一个 ,Apex REST 端点,,这样只要编译一次,后面调用就很快了。 ,第三,匿名块里的方法不能是静态的。, 如果你在块里临时定义一个方法,前面是不允许加 `static` 关键字的。因为整个匿名块本身就类似于一个“静态上下文”,里面的方法限制为实例方法,但你可以直接运行块里的语句。 ,第四,事务控制很自动。, 如果你的匿名块里所有语句都执行成功,系统会自动提交数据库更改。但如果中间有任何未处理的异常导致运行失败,整个块的所有更改都会自动回滚,不会留下脏数据。这是一种安全的机制。 ,第五,它是在当前用户的权限下运行的。, 也就是说,你登录的这个用户对某些字段或对象如果没有读取或编辑权限,匿名块里要是去操作这些字段,可能连编译都过不了,直接报错。它不会绕过你的安全设置,这点要小心。 ,最后一点,关于内部定义的类和接口。, 在匿名块里,你其实也可以定义类或接口,方便做一些复杂逻辑。但这些类和接口默认就是 ,virtual, 的,即使你没有写 `virtual` 修饰符。而且它们同样,不会保存到组织中,,只在本次执行中有效。你可以把它们想象成用完即丢的临时模具。 所以总结一下:匿名块就是一块不保存、每次编译、权限跟随用户、自动提交回滚的“体验沙盒”,特别适合你随手试代码,但不适合做重复调用的生产逻辑。 好了,今天就讲到这里,你是不是对匿名块更清楚了呢?我们下节课见。

关键词

Apex Salesforce Developer Guide