未经检查的异常或运行时异常之间的区别
这是一个面试问题。未检查的异常和错误之间的主要区别是什么,因为两者都没有被捕获?他们将终止该计划。
没有找到相关结果
已邀请:
8 个回复
拟蓬
)它们的方法。属于此类的类在11.2编译时检查JLS异常部分中详细说明: 未经检查的异常类是类
及其子类,类
及其子类。所有其他异常类都是已检查的异常类。 Java API定义了许多异常类,包括已检查和未选中的异常类。程序员可以声明其他检查和未检查的异常类。有关异常类层次结构的描述以及Java API和Java虚拟机定义的一些异常类,请参见第11.5节。 下图说明了异常层次结构: 类
及其子类是普通程序通常不希望恢复的异常,如11.5异常层次结构中所述: 班级
是独立的
的子类,不同于
在类层次结构中,到 允许程序使用这个成语:
捕捉所有例外情况 没有可能恢复 捕获恢复的错误 通常不可能。 总而言之,
是可以进行恢复的异常未经检查异常的子集(但未经检查的异常不是
的同义词,因为许多人在这里回答)。
樊熄忙暖
: RuntimeException是在Java虚拟机的正常操作期间可以抛出的那些异常的超类。 一个方法不需要在其throws子句中声明RuntimeException的任何子类,这些子类可能在方法执行期间抛出但未捕获。
: Error是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题。大多数此类错误都是异常情况。 ThreadDeath错误,虽然是“正常”条件,但也是Error的子类,因为大多数应用程序不应该尝试捕获它。 一个方法不需要在其throws子句中声明在执行方法期间可能抛出但未捕获的任何Error类,因为这些错误是永远不应发生的异常情况。 请注意,“未经检查的异常”仅仅是
的同义词。
哩翔购
炉挤仙挟
芯伶句餐绕
和
之外延伸
类的类称为已检查异常。 也称为编译时异常,因为在编译时检查这些类型的异常。这意味着如果我们忽略这些异常(未通过
或
处理异常),则会发生编译错误。 它们是程序可恢复的问题,这些问题是由代码控制之外的意外情况引起的(例如数据库关闭,文件I / O错误,输入错误等) 我们可以使用
块来避免它们。 例如:
,
等 未经检查的例外情况: 扩展
的类称为未经检查的异常 在编译时不检查未经检查的异常,而不是在运行时检查它们。这就是为什么它们也被称为“运行时异常” 它们也是可编程恢复的问题,但与检查异常不同,它们是由代码流或配置中的错误引起的。 例如:
,
,
等 由于它们是编程错误,因此可以通过良好/明智的编码来避免它们。例如,“除以零”出现
。我们可以通过一个简单的if条件来避免它们 -
。同样,我们可以通过简单地检查参考文献 -
或使用更好的技术来避免
错误:
指的是未被try / catch处理的不可恢复的情况 示例:
,
,
等。
联课
裸雷胜檀哭
和像
这样的错误不需要被捕获,并且可以抛出,直到它们到达main(),这将终止应用程序。 如果没有捕获或包含在throws列表中,则其他异常会导致编译错误。
祁澈盘哼颗