Computer >> Máy Tính >  >> Lập trình >> Java

Những quy tắc nào cần tuân theo khi ghi đè một phương thức ném một ngoại lệ trong Java?

Chúng tôi cần tuân theo một số quy tắc khi ghi đè một phương thức điều đó tạo ra một Ngoại lệ.

  • Khi phương thức lớp cha không đưa ra bất kỳ ngoại lệ nào, phương thức lớp con không thể ném bất kỳ ngoại lệ đã chọn nào , nhưng nó có thể đưa ra bất kỳ ngoại lệ nào chưa được kiểm tra .
class Parent {
   void doSomething() {
      // ...
   }
}
class Child extends Parent {
   void doSomething() throws IllegalArgumentException {
      // ...
   }
}
  • Khi phương thức lớp cha ném một hoặc nhiều ngoại lệ đã chọn , phương thức lớp con có thể ném bất kỳ ngoại lệ chưa được chọn nào .
class Parent {
   void doSomething() throws IOException, ParseException {
      // ...
   }
   void doSomethingElse() throws IOException {
      // ...
   }
}
class Child extends Parent {
   void doSomething() throws IOException {
      // ...
   }
   void doSomethingElse() throws FileNotFoundException, EOFException {
      // ...
   }
}
  • Khi phương thức lớp cha có mệnh đề ném với không được chọn ngoại lệ , phương thức lớp con không thể ném không hoặc bất kỳ số ngoại lệ không được kiểm tra nào , mặc dù chúng không liên quan đến nhau.
class Parent {
   void doSomething() throws IllegalArgumentException {
      // ...
   }
}
class Child extends Parent {
   void doSomething() throws ArithmeticException, BufferOverflowException {
      // ...
   }
}

Ví dụ

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();
      }
   }
}

Đầu ra

SubClassTest.test() method