接口的抽象方法可以在Java中引发异常吗?

是的,接口的抽象方法可能会引发异常。

示例

在下面的示例中,接口(MyInterface)包含一个名为display的抽象方法,该方法抛出IOException。

import java.io.IOException;
abstract interface MyInterface {
   public abstract void display()throws IOException ;
}

须遵守的规则

实现这种方法时,您需要遵循以下给出的规则-

  • 接口中的抽象方法是否抛出某些异常。实现的方法可以引发如下所示的异常-

例子1

import java.io.IOException;
abstract interface MyInterface {
   public abstract void display()throws IOException ;
}
public class InterfaceExample implements MyInterface{
   public void display()throws IOException {
      System.out.println("这是显示方法的子类实现");
   }
   public static void main (String args[]){
      try {
         new InterfaceExample().display();
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }
}

输出结果

这是显示方法的子类实现
  • 接口中的抽象方法是否抛出某些异常。实现的方法可以选择不引发任何异常,如下所示:

例子2

import java.io.IOException;
abstract interface MyInterface {
   public abstract void display()throws IOException ;
}
public class InterfaceExample implements MyInterface{
   public void display() {
      System.out.println("这是显示方法的子类实现");
   }
   public static void main (String args[]){
      try {
         new InterfaceExample().display();
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }
}

输出结果

这是显示方法的子类实现
  • 接口中的抽象方法是否抛出某些异常。实现的方法可以抛出其子类型-

例子3

import java.io.IOException;
abstract interface MyInterface {
   public abstract void display()throws Exception ;
}
public class InterfaceExample implements MyInterface{
   public void display()throws IOException {
      System.out.println("这是显示方法的子类实现");
   }
   public static void main (String args[]){
      try {
         new InterfaceExample().display();
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }
}

输出结果

这是显示方法的子类实现
  • 接口中的抽象方法是否抛出某些异常。实现的方法不应抛出其超级类型

例子4

import java.io.IOException;
abstract interface MyInterface {
   public abstract void display()throws IOException ;
}
public class InterfaceExample implements MyInterface{
   public void display()throws Exception {
      System.out.println("这是显示方法的子类实现");
   }
   public static void main (String args[]){
      try {
         new InterfaceExample().display();
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }
}

编译时错误

输出结果

InterfaceExample.java:8: error: display() in InterfaceExample cannot implement display() in MyInterface
   public void display()throws Exception {
               ^
   overridden method does not throw Exception
1 error