当前位置: 首页 > 编程笔记 >

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

李烨
2023-03-14
本文向大家介绍覆盖在Java中引发异常的方法时,需要遵循哪些规则?,包括了覆盖在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
 类似资料:
  • 本文向大家介绍在使用HTML5时有哪些规则需要遵守?相关面试题,主要包含被问及在使用HTML5时有哪些规则需要遵守?时的应答技巧和注意事项,需要的朋友参考一下 使用HTML5需要遵守哪些规则? 新的特性应该基于HTML、CSS、DOM和JavaScript 减少对外部插件的需求(如Flash) 更好的错误处理 更多的替换脚本的标记 HTML5应与设备无关 开发过程必须可视化

  • 本文向大家介绍使用HTML5需要遵守哪些规则?相关面试题,主要包含被问及使用HTML5需要遵守哪些规则?时的应答技巧和注意事项,需要的朋友参考一下 * 新的特性应该基于HTML、CSS、DOM和JavaScript * 减少对外部插件的需求(如Flash) * 更好的错误处理 * 更多的替换脚本的标记 * HTML5应与设备无关 * 开发过程必须可视化

  • 问题内容: 我正在浏览Kathe sierra编写的SCJP 6,并遇到了有关以重写方法引发异常的解释。我真的不明白。有人可以向我解释吗? 覆盖方法不得抛出比被覆盖方法声明的异常新的或更广泛的检查异常。例如,声明FileNotFoundException的方法不能被声明SQLException,Exception或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的

  • 问题内容: 因此,这是该书的引文: 覆盖方法不得抛出比被覆盖方法声明的异常新的或更广泛的检查异常。例如,声明FileNotFoundException的方法不能被声明SQLException,Exception或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的子类。 现在这是我的问题,如果超类中的方法引发异常,那么重写方法可以根本不引发异常吗? 因为我只是在Ja

  • 问题内容: 在java中为什么需要覆盖equals和hashcode方法?什么时候用到? 问题答案: 让我们尝试通过一个示例来理解它,如果我们不进行覆盖而覆盖并尝试使用。 假设我们有一个类像这样那样的两个对象是相等的,如果他们等于(和生成) 仅覆盖 如果仅覆盖被覆盖,则在你第一次调用时将散列到某个存储桶,而在调用时将散列到其他存储桶(因为它们具有不同的)。因此,尽管它们是相等的,但由于它们没有散列

  • 我不明白使用LiquiBase回滚时的详细步骤。 我有一个场景,比如6个变更集,对于一个变更集,没有定义回滚--也就是说,变更集中只有。 总的来说,想知道Databasechangelog中的记录何时删除吗?