Java语言在设计之初就提供了相对完善的异常处理机制,这种机制大大降低了编写和维护可靠程序的门槛,这也是Java得以大行其道的原因。
Exception与Error
Exception与Error都继承自Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch)。Exception和Error体现了Java平台设计人员对不同异常情况的分类。
Error
Error是指正常情况下不大可能出现的情况,绝大部分的Error都会导致程序处于非正常的、不可恢复的状态。既然是非正常情况,所以不便于也不需要捕获,常见的如OutOfMemoryError等。
Exception
Exception是程序正常运行中可以预料的意外情况,可以被捕获并进行相应的处理。
Exception又分为检查(checked)异常和非检查(unchecked)异常。检查异常在源代码中必须显示的捕获,这是编译器检查的一部分。不检查异常就是所谓的运行时异常,类似NullPointerException、ArrayIndexOutOfBondsException之类,通常是可以编码避免的逻辑错误,可以根据需要来自行判断是否需要捕获,不会在编译期进行检查。
异常处理
在日常编程中如何处理好异常?可以从以下两个方面着手。
1、理解Throwable、Exception、Error的设计和分类。比如,掌握那些应用最广泛的子类,以及如何自定义异常等。
问:NoClassDefFopndError和ClassNotFoundException有什么区别?
2、理解Java语言中操作Throwable的元素和实践。掌握基本语法是必须的,如Try-catch-finally块,throw、throws关键字等,异常处理代码比较繁琐,比如我们需要写很多千篇一律的捕获代码,或者在finally做一些资源回收的工作。随着Java语言的发展,引入了一些更加便利的特性,比如 try-with-resources和multiple catch等。
最佳实践
1、尽量不要捕获类似Exception这样通用的异常,而是应该捕获特定异常。除非深思熟虑,否则不要直接捕获Throwable或者Error。
2、不要生吞(swallow)异常。生吞异常很可能会导致非常难以诊断的诡异情况,不利于异常排查和问题跟踪。
相关推荐
error和exception的详细介绍,彻底弄清这两者的关系与不同,帮助大家很好的使用
Replace Error Code With Exception
第一,理解 Throwable、Exception、Error 的设计和分类 第二,理解 Java 语言中操作 Throwable 的元素和实践 第一,尽量不要
Java中Error与Exception的区别.doc
第一,理解 Throwable、Exception、Error 的设计和分类 第二,理解 Java 语言中操作 Throwable 的元素和实践 第一,尽量不要
Exception 和 Error 有什么区别? Checked Exception 和 Unchecked Exception 有什么区别? Throwable 类常用方法有哪些? try-catch-finally 如何使用? finally 中的代码一定会执行吗? 如何使用 try-with-...
error与exception的区别查阅网上资料大多是java的解释,貌似php的异常处理过程与java差不多 java中的Object继承结构如下: Object—->Throwable——–> Exception —-> RuntimeException | Error Error都是unchecked...
捕获Exception时,不会捕获error,像out of memory这种问题会在中间件的日志可以看到,访问程序也会报相应的错误,方便问题定位;捕获Throwable时,会捕获Exception和Error,像out of memory这种问题也会被捕获到,...
Java中Error和Exception的区别.pdf 学习资料 复习资料 教学资源
1. Error 和 Exception 区别是什么? 2. 运行时异常和一般异常(受检异常)区别是什么? 3. JVM 是如何处理异常的? 4. throw 和 throws 的区别是什么? 5. final、finally、finalize 有什么区别? 6. ...
error和exception有什么区别?
Windows Exception Handling
Exception: 1.可以是可被控制(checked) 或不可控制的(unchecked)。 2.表示一个由程序员导致的错误。 3.应该在应用程序级被处理。
类似rabitmq消息队列,可订阅消息发布消息,常用语物联网项目,mqtt类似rabitmq消息队列,可订阅消息发布消息,常用语物联网项目,mqtt
在使用eclipse的时候,有时候会弹出一个方框,里面的内容是Unhandled event loop exception No more handles,当你点击OK的时候,又会出来一个方框,里面第一句话是 An SWT error has occurred,并且诱导你关闭...
启动报错:验证加密狗无效 error:1001-mysql参数导致.docx
Java就业面试题大全 面向对象的特征有哪些 Overload 和Override的区别 abstract class和interface有什么区别? error和exception有什么区别?
在 Java 中的基本理念是 结构不佳的代码不能运行...我们写 Java 程序经常会出现两种问题,一种是 java.lang.Exception ,一种是 java.lang.Error,都用来表示出现了异常情况,下面就针对这两种概念进行理解。 认识 Exc
Java面试宝典 经典题库 Java中的异常处理机制的简单原理和应用 运行时异常与一般异常有何异同? Error与Exception有什么区别? JVM加载class文件的原理机制? …………