![]() |
1
13
|
![]() |
2
13
简而言之: 您可以并且可能应该从异常中恢复。 你可以, 但不应该 ,从错误中恢复。 |
![]() |
3
2
未选中的异常:
错误:
|
![]() |
4
1
正如检查异常对信令有用,当您的方法无法履行其合同时,在控制之外的其他错误可能会发生,从而阻止Java虚拟机实现其规范,例如内存耗尽时。由于您不能提前计划此类错误,因此必须在任何地方都捕获它们,这违反了维护整洁代码的原则。因此,这些错误是未选中的异常,这意味着不必在throw子句中包含异常。欢迎您捕获它们(好吧,其中一些),但编译器不会让您这样做。 未选中的异常分为两类:扩展RuntimeException的异常和扩展错误的异常。我认识到我之前说过,从类异常继承的类是检查异常,但这只是半正确的:整个事实是,异常层次结构中的类(而不是RuntimeException子层次结构中的类)是检查异常。 扩展RuntimeException的异常表示您可能希望处理的错误,尽管您不需要这样做。 如上所述,不会检查RuntimeExceptions,因为让您宣传它们不会影响方法的正确性,并且会不必要地使您原本可读性很强的代码混乱。另一方面,从错误类派生的异常是未选中的,因为您永远不想捕获它们!错误异常是需要关闭虚拟机的严重错误。上面我使用的internalError扩展了一个错误子类virtualmachinerror。OutofMemoryError是另一个明显的严重错误,但也有其他错误,如StackOverflowError和各种链接错误。链接错误意味着当类加载器试图加载类以执行时,出现了一些错误,并且通常是因为某些外部源已经引入恶意代码以试图绕过Java的安全机制,或者它来自一个不规范的字节代码生成器。 |
![]() |
5
1
来自JavaDoc:
所以,技术上唯一的区别是他们是两个不同的阶级。只有当你申报的时候你才能同时得到
但它们的用途有很大的不同。未选中的例外(
|
![]() |
6
1
Java中错误与未检查异常的区别? 未选中的异常=类RuntimeException及其子类+类错误及其子类 因此,错误是未选中异常的一部分。未选中的异常还包含RuntimeException及其子类。 |
![]() |
7
1
术语“合理”是相对的。同样,术语“应用” 作为中间件开发人员,我习惯于处理应用程序开发人员抛出或忽略的未检查异常。 应用程序捕获的合理内容是其底层基础设施(即,本身是一种应用程序)捕获的合理内容的子集。 这就是未检查的异常与错误不同的地方。未选中的可以被基础结构捕获(即在.database中注册),但被应用程序忽略。 注册一个错误可能是不可能的,因为可能没有任何JVM来运行注册代码(甚至是捕获代码),所以捕获它们是不合理的。 除此之外,选中的异常被过度使用。捕获它们以提升为运行时异常太常见了 |
|
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
![]() |
zaen · 将值传递到异常字符串消息中 2 年前 |
![]() |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
![]() |
Aave · 错误数组长度的特定异常 6 年前 |