重写方法抛出异常的规则 [Java]

  • Post author:
  • Post category:java




重写方法抛出异常的规则



方法重写的规则之一:

子类重写父类方法抛出的异常不能大于父类中被重写的方法抛出的异常类型

  • 如果说父类方法抛出了异常,那么子类重写方法抛出的异常类型不大于父类中被重写的方法抛出的异常类型,不大于,自然也可以没有,也就是子类重写方法可以不抛出异常(但是前提要是真的没有产生异常,如果产生了异常的话还是要抛出,或者就使用try—–catch——finally处理异常)



为什么要求子类重写方法抛出的异常要小于父类被重写方法抛出的异常?

因为在实际的编程中,如果使用到了多态时,这个时候我们编译期间看的是左边(也就是父类类型),而在运行阶段看的是右边(也就是子类重写后的方法),这个时候我们接对多态方式调用的子类重写方法使用try—— catch——finally的方式去直接用IDEA生成一个try—-catch——finally来解决这个异常的话,那么由于我们在编译期间看的是左边,所以看的是父类类型,也就是会以父类方法抛出的异常类型为模板生成try—-catch—–finally,但是这个时候实际这个方法调用的是子类的方法,也就是这个时候我们产生的是一个子类重写方法抛出的异常,如果这个时候子类可以产生比父类异常还大的异常,那么这个时候这个catch就解决不了这个异常了,所以我们规定了子类重写父类的方法抛出的异常类型只能是比父类抛出的异常类型要小

  • 父类被重写的方法不抛出异常时,子类重写的方法也不能抛出异常



版权声明:本文为m0_57001006原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。