Apex 的异常处理
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 的异常处理相关推荐
- Go语言的错误异常处理机制及其应用
一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...
- SpringBoot (二) :全局异常处理设置
说在前面 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有 ...
- 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理
目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...
- Java基础(七)--Exception异常处理
发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...
- 零基础学习python_异常处理(32-33课)
我们写完python执行的时候是不是经常会遇到报错,而且报错都是大片红字,这样给别人的感受就是你写的程序怎么老是出问题啊,这样我们还咋么混下去呢?于是乎,就有了异常处理的东东. python的try语 ...
- Spring Security 实战干货:自定义异常处理
Spring Security 实战干货:自定义异常处理 转自:https://www.cnblogs.com/felordcn/p/12142514.html 文章目录 1. 前言 2. Sprin ...
- C++ 笔记(20)— 异常处理(抛出异常、捕获异常)
异常提供了一种转移程序控制权的方式. C++ 异常处理涉及到三个关键字: try . catch . throw . throw : 当问题出现时,程序会抛出一个异常.这是通过使用 throw 关键字 ...
- recover 没有捕获异常_GO语言异常处理机制panic和recover分析
本文实例分析了GO语言异常处理机制panic和recover.分享给大家供大家参考.具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错 ...
- ssm 异常捕获 统一处理_SSM 统一异常处理
SSM 统一异常处理 spring创建中, 处理异常可以使用try-cache处理, 也可以使用spring提供的统一异常处理 在spring中, 统一处理异常有2中方式 注解方式 @Exceptio ...
最新文章
- html双人台球游戏,使用h5和matter.js实现的简化版台球小游戏
- float64toint
- sift计算描述子代码详解_代码详解——如何计算横向误差?
- 第21章:MongoDB-聚合操作--聚合管道--$geoNear
- dojo Quick Start/dojo入门手册--xmlhttp dojo.xhrGet
- 网上选课系统java大作业_Java面向对象设计大作业——公选课选课系统
- Day5:面向对象的定义(中)
- python mysql数据库_Python3中操作MySQL数据库
- Dos批处理编程常用命令
- 2010-10-08在浏览器中兼容+jQuery3
- 瑞利信道matlab,瑞利信道Matlab仿真程序
- 科技公司网页设计(h5 + css3)
- HDMI 2.0高速电平转换芯片——LK361S20
- python 输出sql汉字_emai中的pythonsql输出
- 2019.5.29 中移物联网前端实习生笔试
- 高德地图(第二篇)测量距离小工具
- python之并发编程-进程之间的通信
- MFC CFileDialog使用整理
- Python生成可执行文件.exe
- Ubuntu安装中文出现Transaction failed:Package dependencies cannot be resolved
热门文章
- XCTF-Reverse:python-trade
- BugkuCTF-Misc:telnet
- 获取android应用签名证书(打包APK用到的那个文件)的SHA1,MD5,SHA256值
- Python入门学习---第二天
- 记录一次Socket异常:java.net.SocketException: Connection reset
- 1040 Longest Symmetric String
- hdu-2204(容斥原理)
- Ubuntu断电重启后黑屏左上角光标闪烁,分辨率低解决办法
- How to save your Ethereum Dapp users from paying gas for transactions
- Plasma链0x1的构造