子类中抛出异常的标准是什么

2024-02-16

到目前为止我所知道的是,子类如果重写超类方法应该抛出相同的异常或异常的子类。

例如:

这是对的

class SuperClass {
    public int doIt(String str, Integer... data)throws ArrayIndexOutOfBoundsException{
 String signature = "(String, Integer[])";
 System.out.println(str + " " + signature);
 return 1;
 }
}

public final class SubClass extends SuperClass {
    public int doIt(String str, Integer... data) throws ArrayIndexOutOfBoundsException {
        String signature = "(String, Integer[])";
        System.out.println("Overridden: " + str + " " + signature);
        return 0;
    }

    public static void main(String... args) {
        SuperClass sb = new SubClass();
        try {
            sb.doIt("hello", 3);
        } catch (Exception e) {
        }
    }
}

这是不正确的

class SuperClass {
    public int doIt(String str, Integer... data)throws ArrayIndexOutOfBoundsException{
 String signature = "(String, Integer[])";
 System.out.println(str + " " + signature);
 return 1;
 }
}

public final class SubClass extends SuperClass {
    public int doIt(String str, Integer... data) throws Exception {
        String signature = "(String, Integer[])";
        System.out.println("Overridden: " + str + " " + signature);
        return 0;
    }

    public static void main(String... args) {
        SuperClass sb = new SubClass();
        try {
            sb.doIt("hello", 3);
        } catch (Exception e) {
        }
    }
}

但我的问题是,为什么编译器认为这个代码块是正确的?

class SuperClass {
    public int doIt(String str, Integer... data)throws ArrayIndexOutOfBoundsException{
 String signature = "(String, Integer[])";
 System.out.println(str + " " + signature);
 return 1;
 }
}

public final class SubClass extends SuperClass {
    public int doIt(String str, Integer... data) throws RuntimeException {
        String signature = "(String, Integer[])";
        System.out.println("Overridden: " + str + " " + signature);
        return 0;
    }

    public static void main(String... args) {
        SuperClass sb = new SubClass();
        try {
            sb.doIt("hello", 3);
        } catch (Exception e) {
        }
    }
}

这是因为在 Java 中每个方法都可以抛出一个RuntimeException (or an Error)随时。它甚至不需要在throws方法签名的一部分。因此,也可以抛出一个异常,它是重写方法中声明的超类型,只要它仍然是RuntimeException.

See Java 语言规范第 11 章(例外) http://docs.oracle.com/javase/specs/jls/se7/html/jls-11.html对于这种行为的规范,特别是11.1.1。例外的种类 http://docs.oracle.com/javase/specs/jls/se7/html/jls-11.html#jls-11.1.1它定义了checked(需要在throws条款)和未经检查的(不需要在中指定throws条款)例外。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子类中抛出异常的标准是什么 的相关文章

  • 抽象超类的默认接口方法

    可以说我有以下结构 abstract class A abstract boolean foo interface B default boolean foo return doBlah class C extends A implemen
  • 如何将 .cer 证书导入 java 密钥库?

    在开发 Java Web 服务客户端期间 我遇到了一个问题 Web 服务的身份验证使用客户端证书 用户名和密码 我从网络服务背后的公司收到的客户端证书位于 cer格式 当我使用文本编辑器检查该文件时 它具有以下内容 BEGIN CERTIF
  • java替代Thread.stop()来中断特定调用

    我正在寻找一种方法来告诉这个调用 大约需要 20 120 秒 final Area image final AffineTransform transform new AffineTransform transform scale imag
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • 在java.util中获取错误ArrayList不带参数[重复]

    这个问题在这里已经有答案了 我已经创建了一个类 Student 现在我尝试将我的 Student 对象存储在 ArrayList 中 但在编译 ArrayList 不接受参数时出现错误 我已经检查了我的代码很多次 但找不到问题所在 我的学生
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 将 EditText 聚焦在设备上运行的 PopupWindow 中时出现异常

    我正在为 Android 开发一个弹出窗口 它正在工作 我在上面添加了一个 EditText 和一个按钮 当在 ADV 上运行时 它可以正常工作 而在设备上运行时 当我专注于 EditText 时 这会抛出一个奇怪的异常 android v
  • 给定一个单词列表 - 在 java 中完成单词的好的算法是什么?权衡:速度/效率/内存占用

    我正在探索潜在的免费 付费应用程序的硬件 软件要求 最终目标是移动 Java 应用程序 该应用程序将从这个简单的目标开始 给定数据库中相关单词的列表 能够对单个字符串输入进行单词补全 换句话说 我已经知道数据库的内容 但算法的内存占用 速度
  • 深拷贝和动态转换 unique_ptr

    假设我有一个如下所示的类 class A virtual A class B public A class C public A 我还有一个 unique ptr 向量 它是这样声明的 std vector
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • 多对多不检索映射数据

    Spring boot 2 5 6 我无法安装版本 概要文件 java Getter Setter NoArgsConstructor AllArgsConstructor EqualsAndHashCode FieldDefaults l
  • 设置 JAVA_HOME 变量时出现问题

    所以我刚刚下载了 Android Studio 并尝试设置 JAVA HOME 变量以便我可以运行它 我使用的是 Windows 8 并按照我找到的所有说明进行操作 但无济于事 转到高级系统设置 gt 环境变量 然后使用包含我的 jre7
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • Microsoft JDBC 中的 JTDS 属性相当于什么?

    我正在将 JTDS 连接更改为 Microsoft JDBC 并且我看到存在于http jtds sourceforge net faq html http jtds sourceforge net faq htmlMicrosoft JD
  • 如何配置嵌入式 MongoDB 以在 Spring Boot 应用程序中进行集成测试?

    我有一个相当简单的 Spring Boot 应用程序 它公开一个小型 REST API 并从 MongoDB 实例检索数据 对 MongoDB 实例的查询通过基于 Spring Data 的存储库 下面的一些关键代码 Main applic
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • 线程“main”中出现异常 java.lang.UnsatisfiedLinkError: ... \jzmq.dll: 找不到依赖库

    我有一个使用 ZMQ 的 java 应用程序 我已经能够在我的 Win7 PC 上运行它 我将 jzmq dll 放在 jar 可执行文件所在的同一文件夹中 然后通过命令 java jar myapp jar 运行它 我的下一步是将其移至服

随机推荐

  • 如何在 Delphi 中递归创建文件夹?

    在创建可以通过给定路径递归创建文件夹的函数时需要一些帮助 C TestFolder Another AndAnother Delphi 函数 MkDir 返回 IOerror 3 MkDir C TestFolder Another And
  • 将证书从驱动程序导入 TrustedPublisher 以进行静默驱动程序安装

    我想安装 Balloon 驱动程序以在 KVM 中运行 Windows 无需用户任何交互 静默安装 我使用 powershell 将驱动程序中的证书提取到某个临时文件 然后使用 certutil exe 将其导入到 TrustedPubli
  • 在元素之间移动鼠标太快时的 jQuery 悬停问题

    我在页面上多次重复以下 html div class outer outer div class inner inner div div 并有这个 jQuery inner hide outer hover function e this
  • clang-tidy 配置中没有等效的“-line-filter”?

    我想配置我的 line filter 中的论点 clang tidy文件而不是生成命令的 cmake 源文件中 添加一个LineFilter文件的密钥只会给我一个 未知密钥 错误 这真的不支持通过配置文件吗 还有其他选择吗 不幸的是 这不受
  • 如何将 CSS 引用添加到 .NET SyndicatedFeed?

    我创建了一个包含许多 Syndicates 的简单 SyndicatedFeed 每个 SyndicateItem 都有 HtmlContent HtmlContent 是一个表 这显示正常 但现在我需要在桌子上添加最少的样式 填充 我相信
  • 将 Oracle 数据库从一台 PC 转移到另一台 PC 的最简单方法是什么?

    我想把我的oracle数据库转移到另一台电脑上 最简单的方法是什么 有没有 GUI 工具可以做到这一点 APC 的答案是逻辑传输的方法 如果您询问是因为您只想一次性传输到另一台电脑 那么 安装相同版本的Oracle 第二台电脑 创建相同的目
  • 当更改视图的模型时,是替换模型更好还是创建新视图更好?

    我的 Backbone 应用程序中有一个电子邮件视图 它目前在中实例化view我的控制器的动作 它有点像这样 routes email id email email function id var email new Email id id
  • Android 嵌入式网络服务器

    我想在我的 Android 应用程序中嵌入一个网络服务器 连接到它的设备将具有两种功能 一个是发送一个 xml 文件 我可以解析该文件并执行一些操作 另一个是能够从我的 SD 卡下载文件 我找到了 nanoHTTPD 和 AndroidHT
  • Linux 上的 mysql2 gem 安装

    我正在尝试在 Linux 上安装 gem 但它给了我一个错误 An error occured while installing mysql2 0 3 11 and Bundler cannot continue Make sure tha
  • Rails 中是否可以有复合外键?

    假设以下数据模式 Usage client id resource type amount Billing client id usage resource usage type rate 在此示例中 假设我有多个资源 每个资源都可以通过多
  • Python json.loads 改变对象的顺序

    我有一个包含 JSON 对象的文件 它是通过以下方式加载的 with open data json r as input file input data input file read 此时 input data 仅包含一个字符串 现在我继
  • Grails 3:外部 Logback.groovy 文件

    我正在尝试将我的logback groovy通过在 my 中设置路径来设置文件build gradlebootrun 闭包中的文件 bootRun if Environment currentEnvironment Environment
  • 浮动创建重叠的 Div

    我有两个 div 一个在另一个里面 当我将里面的一个浮动到 左 时遇到了一些问题 问题是外部 div 不会扩展其高度以适应内部 div 内部的文本 由于这可能非常令人困惑 因此我将尝试用一些代码来解释它 HTML div Inner Div
  • gprof 命令未创建正确的 out.txt

    首先 我运行的是 MacOSX 10 7 1 我已经正确安装了 Xcode 4 和所有库 以便使用 C 语言 我在 shell 中运行 gprof 命令时遇到问题 我将逐步解释我正在做的事情以及我收到的输出 Step 1 roger cd
  • 如何为 if 和 while 语句编写简单的解析器? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要编写一个简单的解析器 将标记转
  • 无法获取 BatchedBridge,请确保您的捆绑包正确打包

    我在 Android 中使用 React Native 时遇到问题 无法获取 BatchedBridge 请确保您的捆绑包正确打包 在此处输入图像描述 1 1 我尝试了一切 将 npm react native react 和 packag
  • Oracle Entity Framework 提供程序不存储包含毫秒的 DateTime.Now

    我基本上和这个人有完全相同的问题 为什么我无法使用实体框架保存当前的 DateTime Now https stackoverflow com questions 18557546 why i cant save the current d
  • R 中的点计数

    假设我从 40 个 x y 对创建以下图片 现在给出黑色的附加点 我希望能够计算出有多少点落在蓝色区域内 有多少点落在蓝色区域之外 以一种非常有效的方式 因为我将在一个昂贵的循环中多次执行此操作 为了说明我正在寻找的内容 请考虑下图 所以正
  • SignalR:如何停止在页面重新加载时创建新连接

    您好 我正在开发一个聊天应用程序以及应用程序中的一些其他页面 一旦我登录 我就会维护用户的会话 我的主要目的是 每当其他用户连接到服务器时 用户应该收到通知 我面临的问题是每当我导航到应用程序中的其他页面时 连接就会丢失 如何停止此行为并继
  • 子类中抛出异常的标准是什么

    到目前为止我所知道的是 子类如果重写超类方法应该抛出相同的异常或异常的子类 例如 这是对的 class SuperClass public int doIt String str Integer data throws ArrayIndex