• 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);
    } 
    
    
  • 相关阅读:
    三:Redis连接池、JedisPool详解、Redisi分布式
    vmware workstation14永久激活密钥分享
    人工智能二:TensorFlow环境搭建
    消息队列二:关于消息队列
    消息队列一:为什么需要消息队列(MQ)?
    java基础进阶一:String源码和String常量池
    人工智能一:Al学习路线
    Python学习二:词典基础详解
    Python学习一:序列基础详解
    什么是Hive
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/apex_exception.html
Copyright © 2020-2023  润新知