异常体系中常用的三个方法
在讲到异常时我们就说在异常体系中我们的常用的方法有三个:
-
public void printStackTrace();
向控制台输出我们捕捉到的异常信息
- 这个方法没有返回值
- 我们的这个方法调用之后就会向控制台去输出捕捉到的异常对象的信息,不需要我们去手动的打印
- printStackTrace()方法声明在Throwable类中,具体的Throwable类的子类中我们并没有重写从Throwable类中继承下来的printStackTrace()方法
- 也就是我们的具体异常类中都是使用的Throwable类中的printStackTrace()方法
- 仅仅只是继承了,并没有去重写
-
public String getMessage();
以字符串形式返回我们的异常出现的原因(也就是我们这里为什么出现这个异常(eg: / by zero) 这个就是一个异常原因,就是除数不能为0)
- 这个方法的返回值为String类型的
- 我们调用这个方法之后要去手动的打印(也就是调用System.out.println()方法将我们的异常原因输出到控制台)
- getMessage()方法也是声明在Throwable类中,我们的具体继承类并没有去重写这个方法
- 也就是使用的就是Throwable类中的getMessage()方法
-
带参构造方法(自定义)
public 异常类类名(String message){
super(message);
}
eg:(这里我们自定义一个异常类)
package com.ffyc.javaoop.day18;
public class ScoreException extends Exception{
public ScoreException(){
super();
}
public ScoreException(String message){
super(message);
}
}
- 这里我们就创建了一个自定义异常类(这里创建的是分数异常)
- 我们创建一个自定义异常类的步骤
- 继承一个现有的异常类
- 书写构造方法(有参和无参都要写)
- 这个时候我们写了有参构造方法之后我们可以发现这个ScoreException的有参构造方法调用的就是它的父类Exception的有参构造方法,而我们的Exception中的构造方法我们在看底层源码时可以发现它是调用了Throwable类的有参构造方法
- 其实也就是我们所有的异常类最终都是在调用Throwable的构造方法
- 这个时候我们写了有参构造方法之后我们可以发现这个ScoreException的有参构造方法调用的就是它的父类Exception的有参构造方法,而我们的Exception中的构造方法我们在看底层源码时可以发现它是调用了Throwable类的有参构造方法
Exception的含参构造方法
public Exception(String message) {
super(message);
}
Throwable的含参构造方法
public Throwable(String message) {
fillInStackTrace();
detailMessage = message;
}