异常信息是如何打印出来的呢?我们在异常类中定义一个带参构造方法,使用super继承父类的构造方法,然后就可以使用getMessage或者printStackTace来显示异常信息了。
public ScoreException(String message){
super(message);
}
我们跟踪看一下在父类中如何实现打印信息的,首先看Expection类,可以看到message也是继承的,如下:
public Exception(String message) {
super(message);
}
我们继续跟踪,可以看到Throwable类,如下:
public Throwable(String message) {
fillInStackTrace();
detailMessage = message;
}
可以看到message是赋值给了detailMessage,那detailMessage是什么呢?再次跟踪发现他是一个成员方法。这里就有getMessage获取成员变量的值了,实现如下:
public String getMessage() {
return detailMessage;
}
以下是自定义异常的完整实现
- 测试类
package exception0804;
import com.lijugang;
import java.util.Scanner;
public class TeacherTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
Teacher t = new Teacher();
try {
t.checkScore(score);
} catch (ScoreException e) {
e.printStackTrace();
}
}
}
- 异常类
package exception0804;
public class ScoreException extends Exception{
public ScoreException(){
}
public ScoreException(String message){
super(message);
}
}
- 实现类
package exception0804;
public class Teacher {
public void checkScore(int score) throws ScoreException{
if (score <0 || score >100){
//throw new ScoreException();
throw new ScoreException("您给的分数有误,分数应该在0-100之间");
}else{
System.out.println("分数正常");
}
}
}