Java的Exception类是检查类型吗?

2023-11-22

下面的示例显示了 Java“Exception”类的相反行为。

try {

}
catch(Exception ex) {

}

在检查类型的异常的情况下,如果我们在 try 块中保留一个 catch 块,而没有任何对该特定检查异常的错误引发语句,那么编译器将引发一个错误,例如“该异常永远不会从 try 语句主体中抛出”。但在上述情况下,编译器不会给出任何错误。

另一方面,如果我们使用 throw 关键字引发“Exception”类类型的异常,则该异常不会自动回避给调用者,如下所示:

throw new Exception();

在上述情况下,编译器会给出类似“Unhandled exception type Exception".

那么Java的Exception类是受检类型还是非受检类型呢?


Exception is一个已检查的异常。从JLS 第 11.2 节:

未经检查的异常类是 RuntimeException 类及其子类,以及 Error 类及其子类。所有其他异常类都是检查异常类。

但是,您所看到的能够在 try 块中没有任何内容(声明抛出任何内容)的情况下捕获它的行为是由于JLS 第 14.20 条:

如果 catch 子句捕获检查异常类型 E1,但不存在检查异常类型 E2,从而满足以下所有条件,则这是一个编译时错误:

  • E2 <:>
  • catch子句对应的try块可以抛出E2
  • 紧邻的 try 语句的前面的 catch 块没有捕获 E2 或 E2 的超类型。

除非 E1 是 Exception 类。

原因是RuntimeException,这是一个未经检查的异常的子类Exception。因此,与所有其他检查异常不同,它是可能的catch (Exception)捕获未经检查的异常,可以将其视为(在简化模型中)可能由any try堵塞。基本上RuntimeException扰乱异常层次结构:(

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

Java的Exception类是检查类型吗? 的相关文章

  • Java中遍历所有文件

    我想让我的程序打印我计算机上所有文件的巨大列表 我的问题是 当我希望它打印位于我的计算机上的所有文件时 它仅打印第一个硬盘驱动器的第一个文件夹中的文件 有什么想法我在这里做错了什么吗 谢谢 这是我使用的代码 Main import java
  • 如何使用appium和java在Android中向下滚动以单击元素?

    我想知道如何使用appium和java向下滚动以单击Android中的元素 我里面有一个元素列表 android support v7 widget RecyclerView由于它有10多个元素 所以我们需要滑动屏幕才能看到下面的元素 每个
  • wsimport Xauthfile 错误

    我正在尝试为我们公司网络外部的受 SSL 保护的 Web 服务 在 Microsoft Biztalk 上 生成客户端 也称为消费者 所需的 java 帮助类 我们只能通过代理访问它 并且无法更改 Web 服务本身的任何内容 这是我提供给
  • 从java管理unix进程的最佳方法是什么?

    我正在寻找一些简单的任务 例如列出用户的所有正在运行的进程 或者通过pid等杀死特定进程 来自Java的基本unix进程管理 有没有相对成熟且有文档的库 我可以从 JVM 运行外部命令 然后解析标准输出 错误 但这似乎需要大量工作 而且一点
  • 在“Java Web 服务教程”之后找不到 taskdef 类 com.sun.tools.ws.ant.WsImport

    我在许多不同的地方看到了同样的问题 即使经过大量谷歌搜索 我也无法解决它 我想做的 更大的图景 是经历Java Web 服务教程 http download oracle com docs cd E17802 01 webservices
  • JOOQ初始化DAO最佳方法

    我想知道初始化 JOOQ 生成 DAO 的最佳实践 现在 我使用以下方法来初始化 JOOQ 生成的 DAO 在以下情况下 Student Dao 是 JOOQ 生成的 public class ExtendedStudentDAO exte
  • java.util.Currency.getInstance 抛出 IllegalArgumentException

    我只是想尝试一下java util Currency 但对于少数货币代码来说它让我困惑java lang IllegalArgumentException 这是我的简单代码 java util Currency c java util Cu
  • 如何设置鼠标监听器的优先级

    我有一个带有列表和按钮的面板 名单已定MouseAdapter with mouseClick 我添加到面板MouseAdapter with mousePressed and mouseReleased and MouseMotionAd
  • 将 person.city.name 添加到 TableView

    我有一个 TableView 和一些 POJO 并且想要将其中一个属性绑定到 TableView 然而 该属性也是一个 POJO 并且应该有一个属性显示在 TableView 中 这是我的代码
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • hibernate中映射到数据库表的bean的默认继承策略是什么?

    这是我在 stackoverflow 中的第一个查询 我想我正在提供所有必要的输入 我已经提供了我的 Java bean 和数据库表详细信息如下 Java Bean 类 import java sql Timestamp import ja
  • 如何在JavaFX中获得狭窄的进度条?

    正如标题所说 我需要制作一个细进度条 我用过这个 progressBar setMaxHeight 0 1 progressBar setPrefHeight 0 1 但这行不通 有人有想法吗 你必须搞乱样式才能让它变小 我真的建议看看ca
  • NoClassDefFound错误:org/apache/tools/ant/util/ReaderInputStream

    我在 Intellij 中有一个带有 gradle 的 java 项目 它直到几个小时前才工作 但在进行微小更改 或者我认为是这样 后突然出现错误 Error gradle resources test analyzer main java
  • 使用 Appengine 进行多线程处理

    既然Appengine不允许java多线程 那么我们如何将现有的多线程代码迁移到该平台呢 例如我有以下代码 Thread t new Thread public boolean alive true public void run whil
  • 如何用java实现FTP?

    我正在使用 FTP 我必须在客户端将消息嵌入到图像文件中 并且我必须将其发送到服务器 在服务器端我必须检索图像文件并然后我将检索该消息 我已经完成了嵌入消息并使用密码学和隐写术技术检索消息 我正在寻找如何将该文件从客户端传输到服务器 我必须
  • 我可以在Java中设置枚举起始值吗?

    我使用枚举来创建一些常量 enum ids OPEN CLOSE OPEN 值为零 但我希望它为 100 这可能吗 Java 枚举与 C 或 C 枚举不同 后者实际上只是整数的标签 Java 枚举的实现更像是类 它们甚至可以有多个属性 pu
  • 我可以为每个片段单独提供工具栏吗?如何处理导航抽屉

    在我的应用程序中 某些页面的工具栏中有自定义视图 有些片段具有透明工具栏 有些片段具有坐标布局滚动 因此 我决定为每个片段单独设置工具栏 我想知道这是否是一个好的做法 如果有人已经这样做了 请分享代码或示例 您可以在片段中使用自定义工具栏
  • JDK1.6 中 ManagementFactory 的托管 Mbean - NotCompliantMBeanException:

    我使用 ManagementFactory 来获取 JDK1 5 和 JBOSS 4 X 中的 ManagedMbeans 现在想将我的相同代码移至 JDK 1 6 Mbean 部分中断并抛出异常 引起原因 javax management
  • 当已经使用 id“org.springframework.boot”插件时,我们是否需要“io.spring.dependency-management”gradle 插件

    当 spring boot 插件添加到 Gradle 项目时会发生什么 为什么我们还需要显式包含 spring dependency management 插件 plugins id org springframework boot ver
  • Java 8 哈希映射无法正常工作

    自 java 8 以来 我们面临着 HashMap 行为方式的奇怪问题 当HashMap的键实现了Comparable接口 但compareTo的实现与equals不一致时 HashMaps 长得比它们应该长的大得多 它们包含多个相同元素的

随机推荐

  • python中有内置的恒等函数吗?

    我想指出一个不执行任何操作的函数 def identity args return args 我的用例是这样的 try gettext find gettext gettext else identity 当然 我可以使用identity上
  • java.lang.ClassNotFoundException: org.joda.time.ReadablePartial

    我使用 Eclipse Luna 和 Jaspersoft Studio 插件 6 2 2 来生成 Web 应用程序的开发人员报告 从 Eclipse 插件运行一份基本的空白报告没有问题 但是当我从 java 类加载此 jrxml 时 我收
  • 如何使用 ajax POST 到 php

    我似乎不知道如何使用ajax 来发帖 我做了一个愚蠢的表格来尝试一下 即使将其一直削减到只有两个值 仍然无法让任何东西发挥作用 我的html是这样的
  • MS Graph API C# 将用户添加到组

    我一直在研究如何使用 Microsoft Graph API nuget 上提供的 dotnet C 库 从 Azure AD 组中添加 以及稍后删除 用户 Nuget MS Graph API 忽略与连接相关的所有其他内容GraphSer
  • 使用servicestack捕获异常

    我们使用 ServiceStack 来提供基于 REST 的服务已经有一段时间了 到目前为止 它的表现令人惊叹 我们所有的服务都写成 public class MyRestService RestService
  • 如何让任务计划程序从 powershell 脚本检测失败的错误代码

    我有一些 powershell 脚本 当它们内部出现故障时 我试图在 Windows 任务计划程序中将它们触发为失败状态 所以我在 powershell 脚本中做了类似的事情 我尝试了退出代码 1 或 99 但看起来 Windows 任务计
  • Python请求库如何使用单个令牌传递授权标头

    我有一个请求 URI 和一个令牌 如果我使用 curl s
  • 如何在C#中触发与最大化相关的事件

    考虑以下代码 Window myWindow new MyWindowSubclass myWindow BringIntoView myWindow Show Code which is effective as pressing the
  • 具有主键和唯一键的表意外锁定

    对于同时具有主键和单独的唯一索引的表上的事务 我遇到了 innodb 锁定问题 看起来如果 TX 使用唯一键删除一条记录 然后重新插入相同的记录 这将导致下一个键锁定而不是预期的记录锁定 因为键是唯一的 请参阅下面的测试用例以及我希望拥有哪
  • 为什么局部静态对象的初始化使用隐藏的保护标志?

    C 中的局部静态对象在第一次需要时初始化一次 如果初始化有副作用 则这是相关的 void once static bool b std cout lt lt hello lt lt std endl return true once第一次调
  • 是否有一个类可以从 .NET 中的 XSD 架构生成示例 XML 文档

    在 Visual Studio 中 您可以从现有架构创建模板 XML 文档 新的XML 模式浏览 器VS2008 SP1 更进一步 可以创建包含数据的示例 XML 文档 NET 中是否有一个类库可以自动执行此操作 而无需使用 Visual
  • Apple Music 与 MPNowPlayingInfoCenter 冲突

    当我的音乐播放器应用程序在后台播放时 我需要一些帮助来解决问题 我可以使用这两种服务在应用程序和后台播放音乐 我还可以设置MPNowPlayingInfoCenter它显示正确的信息 但播放 暂停 下一首曲目和上一首曲目只有在用户通过 Sp
  • 在 Python 中对数字进行四舍五入但保留末尾的零

    我一直在编写一个脚本 该脚本从 Excel 电子表格中获取数据 对数字进行四舍五入 并删除小数点 例如 2606 89579999999 变为 26069 但是 我需要将数字四舍五入到小数点后两位 即使会有尾随零 因此 2606 89579
  • Swift - 如何创建带有裁剪形状的视图

    我正在尝试使用 swift 1 2 和 xcode 6 来实现图像中显示的结果 基本上我想创建一个带有切入形状的视图 以便能够看到下面的视图 为我的应用程序制作教程 我知道如何创建圆形形状 但不知道如何在视图中将其剪掉 我需要一个完整的例子
  • 将 Spark 数据帧保存到 Hive:表不可读,因为“parquet 不是 SequenceFile”

    我想使用 PySpark 将 Spark v 1 3 0 数据帧中的数据保存到 Hive 表中 The 文档 states spark sql hive convertMetastoreParquet 设置为 false 时 Spark S
  • 将线程绑定到处理器

    当我运行多线程代码时 系统 Linux 有时会将线程从一个处理器移动到另一个处理器 由于我有与处理器一样多的线程 它会无缘无故地使缓存失效 并且会混淆我的跟踪活动 您知道如何将线程绑定到处理器吗 为什么系统要这样做 Use sched se
  • NextJs 多区域共享标头

    我有 2 个应用程序管理外壳 and 交付管理我正在 NextJs 中使用多区域来处理这个问题 这两个应用程序都使用带有导航链接的共享标头 但我在从一个区域导航到另一个区域时遇到问题 管理外壳使用 next config js 文件在端口
  • 如何使用 Gradle 构建 Groovy JAR 并将其发布到内部存储库

    我有一个 Groovy 项目 正在尝试使用 Gradle 构建它 首先我想要一个package通过根据其依赖项进行编译来创建 JAR 的任务 然后我需要为该 JAR 生成 Maven POM 并将 JAR POM 发布到内部 Artifac
  • Python继承返回属性错误

    刚刚开始学习 Python 我是 Derek Banas 的粉丝 一直在遵循教程 但我被一些代码困住了 class Dog Animal owner def init self name height weight sound owner
  • Java的Exception类是检查类型吗?

    下面的示例显示了 Java Exception 类的相反行为 try catch Exception ex 在检查类型的异常的情况下 如果我们在 try 块中保留一个 catch 块 而没有任何对该特定检查异常的错误引发语句 那么编译器将引