覆盖在Java中引发异常的方法时,需要遵循哪些规则?

 当我们重写抛出Exception的方法时,我们需要遵循一些规则。

  • 当父类方法 未引发任何异常时,子类方法将不会引发任何已检查的异常,但它可能会引发任何未检查的异常。

class Parent {

   void doSomething() {

      //...-

   }

}

class Child extends Parent {

   void doSomething() throws IllegalArgumentException {

      //...-

   }

}

  • 当 父类方法抛出一个或多个检查异常时,子类方法可以抛出任何未检查异常。

class Parent {

   void doSomething() throws IOException, ParseException {

      //...-

   }

   void doSomethingElse() throws IOException {

      //...-

   }

}

class Child extends Parent {

   void doSomething() throws IOException {

      //...-

   }

   void doSomethingElse() throws FileNotFoundException, EOFException {

      //...-

   }

}

  • 当父类方法具有带有未检查的 异常的throws子句时,子类方法 可以抛出任何或任何数量的未检查的异常,即使它们不相关。

class Parent {

   void doSomething() throws IllegalArgumentException {

      //...-

   }

}

class Child extends Parent {

   void doSomething() throws ArithmeticException, BufferOverflowException {

      //...-

   }

}

示例

import java.io.*;

class SuperClassTest{

   public void test() throws IOException {

      System.out.println("SuperClassTest.test() method");

   }

}

class SubClassTest extends SuperClassTest {

   public void test() {

      System.out.println("SubClassTest.test() method");

   }

}

public class OverridingExceptionTest {

   public static void main(String[] args) {

      SuperClassTest sct = new SubClassTest();

      try {

         sct.test();

      } catch(IOException ioe) {

         ioe.printStackTrace();

      }

   }

}

输出结果

SubClassTest.test() method

以上是 覆盖在Java中引发异常的方法时,需要遵循哪些规则? 的全部内容, 来源链接: utcz.com/z/338386.html

回到顶部