Java的Exception和Error

Exception和Error的区别

(1)Exception和Error都继承Throwable,java中只有Throwable类型的实例才能被抛出(throw)或捕获(catch)。
(2)Exception是可以预料到的意外情况,应该被捕获进行相应的处理。Exception又分为可检查(checked)异常的和不检查(unchecked)异常。可检查异常必须显示地进行捕获处理,这是编译期检查的一部分。不检查异常又叫运行时异常(RuntimeException),通常是编码时可以避免的,编译器不强制检查。
(3)Error是正常情况下,不大可能出现的情况。绝大部分的Error都可能导致程序处于非正常、不可恢复状态,无需捕获。

常见的子类

Error : OutOfMemoryError
不检查异常:NullPointerException,ArrayIndexOutOfBoundsException

NoClassDefFoundError和ClassNotFoundException的区别

(1)ClassNotFoundException是检查异常。
当通过name动态地加载类,在classpath找不到对应的class文件时会出现该异常:
Class.forName(name)
ClassLoader.loadClass、
ClassLoader.findSystemClass
(2)NoClassDefFoundError是Error。
通常是通过new创建一个新的对象,但是找不到对应的类时出现。
类在编译时能找到,在运行时却找不到,会出现NoClassDefFoundError,通常是jar包冲突引起的。

throw和throws的区别

throw作用于函数体里面,用来抛出一个异常。
throws出现在函数头,用来表明可能出现的异常。

try-with-resources

try-with-resources能够确保try语句结束时关闭资源,无需再将处理资源关闭的代码写在finally块中,前提资源必须是实现了AutoClosable接口。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容