异常
一. JVM的默认处理方案
a. 把异常名称,原因,异常出现的位置灯信息输出在控制台
b. 程序停止执行
这明显是不行的
二. try catch
三. Throwable(异常的超类) 的成员方法
public String getMessage() // 详细信息
public String toString() // 简短描述
public void printStackTrace() // 异常信息输出在控制台
public static void method() {
try {
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
System.out.println("这里能够访问到吗");
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("--------");
System.out.println(e.getMessage());
System.out.println("--------");
System.out.println(e.toString());
}
}
四. 编译时异常和运行时异常
Java 中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常
所有的 RuntimeException 类及其子类的实例被称为运行时异常,其他的异常都是编译时异常
编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常:无需显示处理,也可以和编译时异常一样处理
五. 自定义异常
异常类
public class ScoreException extends Exception{
public ScoreException() {}
public ScoreException(String message) {
super(message);
}
}
老师类 (抛出异常)
public void checkScore(int score) throws ScoreException{
if(score >=100 || score < 0) {
throw new ScoreException("分数不合法");
} else {
System.out.println("分数是:" + score);
}
}
测试类
public class ExceptionDemo {
public static void main(String[] args) {
Teacher te = new Teacher();
try {
te.checkScore(120);
} catch (ScoreException e) {
e.printStackTrace();
}
}
}