devxlogo

Exception Restrictions when Overriding

Exception Restrictions when Overriding

When you extend a class and override a method, Java insists that the new method cannot be declared as throwing checked exceptions of classes other than those that were declared by the original method (in the base class). It may, however, throw exceptions derived from the base-class exceptions. This is a useful restriction, since it means that code that works with the base class will automatically work with any object derived from the base class (a fundamental OOP concept, of course), including exceptions.
This example demonstrates the kinds of restrictions imposed (at compile-time) for exceptions:

 public class Base {   public void f() throws IOException {   }}public class LegalOne extends Base {   public void f() throws IOException {   /* Overridden method throws the same _exception as in the base-classversion, hence legal. */   }}public class LegalTwo extends Base {   public void f() throws IOException, _MalformedURLException {   /* MalformedURLException is derived from _IOException, hence it is legalto throw this exception in f(). */   }}public class IllegalOne extends Base   public void f() throws IOException, _IllegalAccessException {   /* IllegalAccessException is not derived _from IOException; in fact, itis the super class of IOException. Hence this _method declaration isillegal, since overridden methods can only throw _either the base-classexceptions or exceptions derived from the base-class _exceptions. */   }}public class IllegalTwo extends Base   public void f() throws Exception {   /* Exception is the super-class of IOException, _hence illegal, asexplained above. */   }}

devx-admin

Share the Post: