1)子类重写父类的方法的时候,子类的方法的抛出的异常必须要么是父类的方法异常一样,要么是父类方法异常的子类
2)子类重写父类方法的时候,如果父类中的这个方法没有抛出异常,那么子类重写的这个方法也不能抛出异常,只能try...catch
3)如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
2、如何使用异常处理
1)原则:如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这时用throws
2) 区别: 后续程序需要继续运行就try后续程序不需要继续运行就throws
3)如果JDK没有提供对应的异常,需要自定义异常。
3、自定义异常
package Exception_customise;
import java.util.Scanner;
/*
* 自定义异常类,两种方式
* 1)自定义一个类,这个继承自Exception
* 2)继承RuntimeException
*
*
* */
//方式1:自定义一个类,这个类继承自Exception
//需求:检查学生成绩是否合格,0-100为合格,否则为不合格
public class Exception_customise_1 {
//throws代表可能发生的异常
public static void main(String[] args) throws Exception{
//创建键盘录入
Scanner sc = new Scanner(System.in);
//提醒用户录入
System.out.println("请输入学生成绩");
//接收数据
int number = sc.nextInt();
//创建学生对象
Student s = new Student();
s.check(number);
}
}
class MyException extends Exception{
//定义有一个判断方法
public MyException(){
super();
}
//定义获取异常的方法
public MyException(String message){
super();
}
}
//检验学生成绩
class Student{
public void check(int number)throws MyException{
if(number < 0 | number > 100){
throw new MyException("该学生成绩不符合规范");
}
else {
System.out.println("该学生成绩没有问题");
}
}
}
方式2:
package Exception_extend;
/*
* 异常中的注意事项:
* 子类继承父类的时候的注意事项
* 1)子类重写父类的方法的时候,子类的方法的抛出的异常必须要么是父类的方法异常一样,要么是父类方法异常的子类
* 2)子类重写父类方法的时候,如果父类中的这个方法没有抛出异常,那么子类重写的这个方法也不能抛出异常,只能try...catch
* 3)如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
* */
public class Exception_extend_attentions {
// 定义父类
class fu {
// 简化为抛出大异常
public void show() throws Exception {
}
public void method() throws Exception {
}
}
// 定义子类
class zi extends fu {
// 重写父类
@Override
public void show() throws Exception {
super.show();
}
@Override
public void method() throws Exception {
super.method();
try {
int[] x = { 1, 2, 3, 4, 5 };
System.out.println(x[5]);
} catch (Exception e) {
e.getMessage();
}
}
}
}