异常信息是如何打印出来的呢?我们在异常类中定义一个带参构造方法,使用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("分数正常"); } }}