接口的抽象方法可以在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