📜  Java中的 Throwable 类和示例(1)

📅  最后修改于: 2023-12-03 15:01:57.649000             🧑  作者: Mango

Java中的 Throwable 类和示例

Java中的Throwable类是所有错误和异常类的基类。该类继承自Object类,并且它是不可实例化的。

Throwable类的继承结构

Throwable类的继承结构如下所示:

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Error
        |
        +--java.lang.Exception
                |
                +--java.lang.RuntimeException

其中,Error类和Exception类是Throwable类的直接子类。

  • Error:Java虚拟机无法解决的错误,如OutOfMemoryError、StackOverflowError等。
  • Exception:程序运行时可能出现的异常,又分为Checked Exception和Unchecked Exception。
    • Checked Exception:编译器会检查该错误是否被处理或抛出,如IOException、ClassNotFoundException等。
    • Unchecked Exception:编译器不会进行检查,如NullPointerException、IndexOutOfBoundsException等。一般都是由程序员的错误导致的。
Throwable类的构造方法
public Throwable()
public Throwable(String message)
public Throwable(String message, Throwable cause)
public Throwable(Throwable cause)

以上是Throwable类的四种构造方法,分别用于不带异常信息、带异常信息、带异常信息和异常原因、只带异常原因的情况。

Throwable类的常用方法

以下是Throwable类的常用方法:

  • getMessage():返回异常的详细信息。
  • printStackTrace():将异常的跟踪栈信息输出到标准错误流中。
  • getCause():返回异常的原因。
示例代码
public class ExceptionDemo {
    public static void main(String[] args) {
        try {
            // 抛出一个自定义异常
            throw new MyException("这是一个自定义异常");
        } catch (MyException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

以上代码是一个自定义异常的示例,其中MyException类继承自Exception类,而Exception类又继承自Throwable类,因此MyException类可以通过throw关键字抛出,然后通过try-catch来处理。在catch块中,可以通过getMessage()和printStackTrace()方法获取异常信息和跟踪栈信息。