异常在父类覆盖中的体现

  • 子类在覆盖父类,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类异常或该异常的子类。
  • 原因:。。。。。
  • 如果在函数内部真的出现了与父类的异常无关的异常,那只能就地解决,千万不能抛;抛了之后,编译都不通过!
  • 如果父类或者接口的方法中没有异常抛出,那么子类也一定不能有异常抛出!
  • 练习:
   /*
有一个长方形。
都可以获取面积。对于面积如果出现非法的数值,视为是获取面积出现了问题。
问题通过异常表示。
现有对这个程序进行基本设计。
*/
interface Shape{
    void getArea();
}
class NoValueException extends Exception{
    NoValueException(String message){
        super(message);
    }
}
class Rec implements Shape{
    private int len, wid;

    Rec(int len, int wid) throws NoValueException{
        //以往我们为了不让用户不输入负数,通常会在这加一个if,else,该方法非常不可取
        //这个导致,程序执行代码和问题处理代码结合太紧密,可读性太差!!!
        //正确处理:用异常处理。
        if(len <= 0 || wid <= 0)
            throw new NoValueException("出现非法值");
        this.len = len;
        this.wid = wid;
    }
    public void getArea(){
        System.out.println(len*wid);
    }
}
class ExceptionTest1{
    public static void main(String[] args){
        
        try{
            Rec r1 = new Rec(1,0);
            r1.getArea();    //上面语句出现异常,下面的语句就不会在执行,程序会处理该异常,然后结束。
        }
        catch(NoValueException e){
            System.out.println(e.toString());
            System.out.println("请重新输入");
        }
    }
}

你可能感兴趣的:(异常在父类覆盖中的体现)