前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Exception 类

Exception 类

作者头像
Qwe7
发布2022-08-05 21:47:28
4160
发布2022-08-05 21:47:28
举报
文章被收录于专栏:网络收集网络收集

源码解析

状态信息

Throwable / Exception 类是有状态的(因此 Throwable 是接口而不能是类),记录了四个信息:

代码语言:javascript
复制
private transient Object backtrace;                          // 栈的回溯点
private String detailMessage;                                // 异常的信息:在创建异常时备注
private Throwable cause = this;                              // 异常的原因:导致该异常的异常,默认为自身
private StackTraceElement[] stackTrace = UNASSIGNED_STACK;   // 异常的发生顺序:以栈的形式存储Copy to clipboardErrorCopied

构造方法

Throwable / Exception 类含有四个构造方法,在创建时可以记录异常信息:

代码语言:javascript
复制
throw new Exception();                           // 默认
throw new Exception("message");                  // 记录异常信息
throw new Exception(e);                          // 记录异常原因
throw new Exception("message", e);               // 记录详细信息和异常原因Copy to clipboardErrorCopied

常用方法

Throwable / Exception 类定义了多种常用方法用于获取异常数据,常用的有:

  • getMessage 方法:获取异常的信息。
  • getStackTrace 方法:获取的异常发生顺序。
  • printStackTrace 方法:获取异常的发生顺序并打印(开发和调试阶段用来显示异常信息,帮助开发者找出错误)。
代码语言:javascript
复制
catch(Exception e){
    System.out.println(e.getMessage());
    e.printStacTrace();                           
}Copy to clipboardErrorCopied

自定义异常

我们也可以通过继承并重写 Exception / RuntimeException 类的方式,自定义异常类并使用。

代码语言:javascript
复制
// 自定义异常,重写方法可任选
class MyException extends Exception {
    @Override
    public MyException() {
        super();
    }
    @Override
    public MyException(String message) {
        super(message);
    } 
    @Override
    public MyException(String message, Throwable cause){
        super(message,cause);
    }
    @Override
    public MyException(Throwable cause) {
        super(cause);
    }
}Copy to clipboardErrorCopied

异常转译

在项目开发过程中,当 Sevice/DAO 层出现如 SQLException 异常时,程序一般不会把底层的异常传到 controller 层。程序可以捕获原始异常,然后再抛出一个新的业务异常。

代码语言:javascript
复制
catch(SQLException e){
    throw new MyException("SQL Error", e);
}
Copy to clipboardErrorCopied

本文系转载,前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源码解析
  • 自定义异常
  • 异常转译
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com