Apex 中的异常处理

在 Apex 中,和其他语言类似,对于异常处理通常使用 try、catch、finally、throw 等关键字。

对于每一个 try 代码段,必须要有至少一个 catch 或 finally 代码段,而 finally 代码段最多只能有一个。

finally 代码段是必然会执行的代码段,无论异常有没有发生。

异常处理的结果

当发生异常后,代码执行会终止,而在此异常之前所有的数据库 DML 操作都会回滚,无论是否已经在此之前设定了“保存点(SavePoint)”。

与此同时,相关的错误信息会写入日志,用户可以在“设置”界面下的 “Debug Logs” 选项中进行查看。错误信息也会显示在用户界面中。

异常类型

系统定义的异常类型有:

  • DmlException:关于数据库操作的异常
  • ListException:关于列表操作的异常
  • NullPointerException:关于空指针的异常
  • QueryException:关于查询语句的异常
  • SObjectException:关于SObject对象的异常

它们共有的方法包括:

  • getCause():给出异常原因
  • getLineNumber():给出发生异常的行数
  • getMessage():给出异常的详细信息
  • getStackTraceString():给出异常发生的栈信息
  • getTypeName():给出异常的类型,比如 DmlException、NullPointerException 等

对于每个异常类型,还有自己的方法,比如 DmlException 就拥有 getDmlFieldNames()、getDmlMessage() 等方法。

标准格式

try {// 执行操作,有可能发生异常
} catch(DmlException e) {// 捕捉 DML 相关的异常
} catch(SObjectException e) {// 捕捉 SObject 相关的异常
} catch(Exception e) {// 发生异常之后,在此进行后续处理
} finally {// 其他的操作,必然会执行的代码段
}

如果要捕捉不同的异常类型,要将“一般异常类型”(Exception)放在最后。

自定义异常类型

对于系统自定义的异常类型,只能使用 catch 来捕捉,而不能使用 throw 语句来抛出。开发者也可以定义自己的异常类型。

自定义异常类型也是一个类,必须继承 Exception 类或其任何子类。

自定义异常类型的名字必须以 Exception 结尾。

标准格式:

public class BaseException extends Exception {}public class ExampleException extends BaseException {}...// 抛出异常类
throw new BaseException();// 抛出异常类并加上错误信息
new ExampleException('An error occurred.');// 抛出异常类并嵌套异常类变量
try { throw new BaseException('First exception');
} catch (BaseException e) { throw new ExampleException('Thrown with inner exception', e);
}

转载于:https://www.cnblogs.com/chengcheng0148/p/apex_exception.html

Apex 的异常处理相关推荐

  1. Go语言的错误异常处理机制及其应用

    一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...

  2. SpringBoot (二) :全局异常处理设置

    说在前面 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有 ...

  3. 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理

    目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...

  4. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  5. 零基础学习python_异常处理(32-33课)

    我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...

  6. Spring Security 实战干货:自定义异常处理

    Spring Security 实战干货:自定义异常处理 转自:https://www.cnblogs.com/felordcn/p/12142514.html 文章目录 1. 前言 2. Sprin ...

  7. C++ 笔记(20)— 异常处理(抛出异常、捕获异常)

    异常提供了一种转移程序控制权的方式. C++ 异常处理涉及到三个关键字: try . catch . throw . throw : 当问题出现时,程序会抛出一个异常.这是通过使用 throw 关键字 ...

  8. recover 没有捕获异常_GO语言异常处理机制panic和recover分析

    本文实例分析了GO语言异常处理机制panic和recover.分享给大家供大家参考.具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错 ...

  9. ssm 异常捕获 统一处理_SSM 统一异常处理

    SSM 统一异常处理 spring创建中, 处理异常可以使用try-cache处理, 也可以使用spring提供的统一异常处理 在spring中, 统一处理异常有2中方式 注解方式 @Exceptio ...

最新文章

  1. html双人台球游戏,使用h5和matter.js实现的简化版台球小游戏
  2. float64toint
  3. sift计算描述子代码详解_代码详解——如何计算横向误差?
  4. 第21章:MongoDB-聚合操作--聚合管道--$geoNear
  5. dojo Quick Start/dojo入门手册--xmlhttp dojo.xhrGet
  6. 网上选课系统java大作业_Java面向对象设计大作业——公选课选课系统
  7. Day5:面向对象的定义(中)
  8. python mysql数据库_Python3中操作MySQL数据库
  9. Dos批处理编程常用命令
  10. 2010-10-08在浏览器中兼容+jQuery3
  11. 瑞利信道matlab,瑞利信道Matlab仿真程序
  12. 科技公司网页设计(h5 + css3)
  13. HDMI 2.0高速电平转换芯片——LK361S20
  14. python 输出sql汉字_emai中的pythonsql输出
  15. 2019.5.29 中移物联网前端实习生笔试
  16. 高德地图(第二篇)测量距离小工具
  17. python之并发编程-进程之间的通信
  18. MFC CFileDialog使用整理
  19. Python生成可执行文件.exe
  20. Ubuntu安装中文出现Transaction failed:Package dependencies cannot be resolved

热门文章

  1. XCTF-Reverse:python-trade
  2. BugkuCTF-Misc:telnet
  3. 获取android应用签名证书(打包APK用到的那个文件)的SHA1,MD5,SHA256值
  4. Python入门学习---第二天
  5. 记录一次Socket异常:java.net.SocketException: Connection reset
  6. 1040 Longest Symmetric String
  7. hdu-2204(容斥原理)
  8. Ubuntu断电重启后黑屏左上角光标闪烁,分辨率低解决办法
  9. How to save your Ethereum Dapp users from paying gas for transactions
  10. Plasma链0x1的构造