Java源码 - Exceotion异常类的基类Throwable分析

本文探讨了Java中的异常处理,重点分析了Exception和Error的基类Throwable。Throwable包含异常名、描述信息和栈帧追踪等关键属性,其中栈帧追踪对于定位bug至关重要。通过getStackTrace()和fillInStackTrace()等方法,我们可以获取和处理异常信息。异常链和被压抑的异常是异常处理的重要概念,有助于理解异常的层次结构和捕获机制。
摘要由CSDN通过智能技术生成

常用的异常有:Error、Exception,这两个类的基类都是Throwable。

其中Error是用来表示编译时和系统的错误,这一类问题,基本不需要我们关心。

Exception就是我们常见的异常。由源码可知,Exception类自身并没有什么重要的东西,它只是Throwable类的一个子类。

public class Exception extends Throwable {
    static final long serialVersionUID = -3387516993124229948L;
    
    public Exception() {
        super();
    }
    public Exception(String message) {
        super(message);
    }
    public Exception(String message, Throwable cause) {
        super(message, cause);
    }
    public Exception(Throwable cause) {
        super(cause);
    }

    protected Exception(String message, Throwable cause,
                        boolean enableSuppression,
                        boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

因此我们学习异常的源码重心就放在了Throwable类上。

一个异常类,主要的成员属性有:异常名,以及描述信息,和异常的栈帧追踪。

异常名:告诉我们是什么异常,通常用类名表示,比如IOException,这是IO异常。

描述信息:则是该异常的具体描述,是如何发生的,比如网络连接失败等等。

异常的栈帧追踪:这记录了异常发生的代码位置。一般从main函数开始,记录每一步函数调用,一直到最后导致异常的代码。

public class Throwable implements Serializable {
    ...
     priv
package com.hexiang.utils; import java.awt.Component; import javax.swing.JOptionPane; /** * This class ExceptionManager and its subclasses are a form of * Exception. It is used to wrap all the Throwable instances * and handle them in a unified way. It will show the information which consists of * StackTraces and Messages by using JOptionPanel. * * @author Estelle * @version 1.0 * @see java.lang.Exception * @since jdk 1.5 */ public class ExceptionManager extends RuntimeException { private static final long serialVersionUID = -6963187366089365790L; /** * This field alerter is used to show the information the Class offered. * * @see javax.swing.JOptionPane */ private JOptionPane alerter; /** * This static method create an instance of the ExceptionManager by invoking the * constructor ExceptionManager(String msg). * * @param msg The message will pass the specified constructor * @return An instance of the ExceptionManager created by invoking the constructor * ExceptionManager(String msg). */ public static ExceptionManager wrap(String msg){ return new ExceptionManager(msg); } /** * This static method create an instance of the ExceptionManager by invoking the * constructor ExceptionManager(Throwable throwable). * * @param throwable The cause will pass the specified constructor * @return An instance of the ExceptionManager created by invoking the constructor * ExceptionManager(Throwable throwable). */ public static ExceptionManager wrap(Throwable throwable){ return new ExceptionManager(throwable); } /** * This static method create an instance of the ExceptionManager by invoking the * constructor ExceptionManager(String msg,Throwable throwable). * * @param msg The message will pass the specified constructor * @param throwable The cause will pass the specified c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值