错误和异常的区别(Error vs Exception)
guibin.beijing@gmail.com
今天突然有朋友问了这样一个问题,"Error" 和 "Exception"之间有啥区别?我觉得挺有意思,但是似乎又不能脱口而出。查找了一番资料之后,稍微总结了一下。
1) error都是继承自父类java.lang.Error,而exception都继承自java.lang.Exception.
2) 再看看JDK中对于java.lang.Error和java.lang.Exception的解释。
java.lang.Error: An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions. 即:Error是Throwable的子类,用于标记严重错误。
合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。
java.lang.Exception: The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch. 即Exception 是Throwable的一种形式的子类,用于指示一种合理的程序想去catch的条件。
即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。
3) Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).
checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。
unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。比如ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。
因此,面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。
参考资料:
http://www.coderanch.com/t/269746/java-programmer-SCJP/certification/Error-vs-Exception
http://oss.org.cn/ossdocs/java/se/jdk6/docs/api/java/lang/Error.html
http://oss.org.cn/ossdocs/java/se/jdk6/docs/api/java/lang/Exception.html
分享到:
相关推荐
错误和异常之间的主要区别在于: 1. **严重程度**:`Error`通常表示系统级别的严重问题,而`Exception`则代表运行时的程序错误,更易于修复或恢复。 2. **处理方式**:`Error`通常不被捕获,因为它们表示程序无法...
Java中Error与Exception的区别 Java 中的 Error 和 Exception 是两个不同的...Error 和 Exception 是 Java 中两个不同的概念,它们之间存在着许多不同之处,了解它们的区别对于我们编写高质量的 Java 程序非常重要。
理解`Error`和`Exception`的区别对于编写健壮的Java代码至关重要。在实际编程中,应该尽量避免让程序抛出`Error`,因为这通常意味着系统层面的问题,而`Exception`则应当被适当地捕获和处理,以提高程序的稳定性和...
在Java编程语言中,Error类和Exception类是异常处理的核心组成部分,它们都源自最顶层的Throwable类。了解这两者之间的区别对于编写健壮且可维护的代码至关重要。 首先,我们来看Exception类。Exception是所有可抛...
而在Java中,所有异常类都继承自`Throwable`类,其中`Exception`和`Error`是两个重要的子类。本文将详细介绍捕获`Throwable`和捕获`Exception`的区别,并通过一个简单的示例来验证这两种方法的不同效果。 #### ...
Java 语言中的异常处理是其核心特性之一,它通过`Throwable`、`Exception`和`Error`类层次结构来组织和区分不同的错误情况。`Throwable`是所有异常和错误的基类,它分为两大类:`Exception`和`Error`。 `Exception`...
【Exception和Error的区别】 在Java编程中,Exception和Error都是基于`Throwable`类的子类,它们构成了Java异常处理机制的基础。理解两者的差异对于编写健壮的代码至关重要。 1. **Exception**: Exception是程序...
Exception 则是可以捕捉的,Java 提供了两类主要的异常:runtime exception 和 checked exception。checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。对于这种异常,JAVA 编译器强制要求我们...
error与exception的区别查阅网上资料大多是java的解释,貌似php的异常处理过程与java差不多 java中的Object继承结构如下: Object—->Throwable——–> Exception —-> RuntimeException | Error Error都是unchecked...
在Java编程语言中,`java.lang.Throwable`是所有错误(Error)和异常(Exception)的顶级父类,它是Java异常处理机制的核心组成部分。这个类位于`java.lang`包中,是Java标准库的一部分,提供了处理运行时问题的标准...
15_Python中错误和异常处理 文章对应的 jupyter notebook 源码资源,可以用来直接练习,欢迎下载使用。 目录如下: 错误(Error) 异常(Exception) 错误与异常的区别 基本的异常处理 try-except try-except-else ...
首先,我们需要理解错误代码(Error Code)与异常(Exception)的区别。错误代码通常是在函数返回值中携带,而异常则是通过抛出和捕获机制来处理运行时错误。在某些情况下,如性能敏感或资源受限的环境,错误代码...
2. Java异常类层次结构:讲解Java中的Error和Exception的区别,以及它们各自的作用。 3. 自定义异常:如何创建自定义的异常类,以便更好地封装和处理特定的错误情况。 4. 源码分析:可能涉及某个流行的Java库或框架...
Java异常面试题(2020最新...Java异常处理是Java开发中非常重要的一部分,了解Java异常架构和异常关键字对于编写高质量的Java代码非常重要。同时,了解Java异常处理最佳实践也可以帮助开发者写出更加健壮和高效的代码。
Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。 Error(错误)是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。这种错误一般表示代码运行时 JVM ...
Throwable 类是所有异常和错误的超类,有两个子类 Error 和 Exception,分别表示错误和异常。其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查...
同时,理解 `RuntimeException` 和 `CheckedException` 的区别,以及何时应该使用 `try-catch` 语句来处理异常,是衡量一个 Java 开发者基础技能的重要标志。 总的来说,理解并掌握 Java 中的异常处理机制,不仅能...
1. **Error 和 Exception 区别**:Error是系统级别的,不可恢复,而Exception是应用程序可以处理的异常。 2. **运行时异常与受检异常区别**:运行时异常无需在编译时处理,受检异常必须处理。 3. **JVM 处理异常**:...