We have Throwable
类是其基类Error
类(对于无法恢复的错误)和Exception
类(对于可恢复的 errors)
So,
1> we can throw
一个实现的对象error
类。(虽然实现没有意义Error
类因为我们有Exception
类做同样的事情..)
2>Java不建议catchError
目的..
那么需要什么Error
那么对象呢?编译器不能在内部实现它吗?难道不是一个错误吗?
从技术上讲,真正的区别并不是“不可恢复的错误”和“可恢复的错误”之间的区别,而是受检查的异常和未经检查的异常之间的区别。爪哇does它们之间的区别如下:
- you must在您的中声明一个已检查的异常
throws
条款;如果使用在 a 中抛出已检查异常的方法try
阻止,你必须catch
所说的异常或将此异常添加到您的方法中throws
clause;
- you may在您的中声明未经检查的异常
throws
条款(不推荐);如果使用在 a 中抛出未经检查的异常的方法try
阻止,你may catch
该异常或将此异常添加到您的方法中throws
条款(也不推荐)。
肯定不推荐什么,除非你really知道你在做什么,就是“吞掉”任何类型的未经检查的异常(即,catch
它带有一个空块)。
Exception
是检查异常基类;Error
and RuntimeException
都是未经检查的异常,它们的所有子类也是如此。您会注意到所有三个类都扩展了Throwable
,以及 javadocThrowable
指出:
为了编译时检查异常,Throwable 和
Throwable 的任何子类,但不是两者的子类
RuntimeException 或 Error 被视为已检查异常。
著名的未经检查的异常的经典示例:
-
OutOfMemoryError
(延伸Error
);
-
StackOverflowError
(延伸Error
);
-
NullPointerException
(延伸RuntimeException
);
-
IllegalArgumentException
(延伸RuntimeException
);
- etc etc.
之间唯一真正的区别Error
and RuntimeException
是他们估计的严重程度,并且是“语义”差异,而不是技术差异:最终,两者的行为相同。如果您发现某个 IDE(例如 Intellij IDEA)也会对您大喊大叫Error
但不要重新扔掉它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)