`
guibin
  • 浏览: 366199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

错误和异常的区别(Error vs Exception)

    博客分类:
  • Java
 
阅读更多
错误和异常的区别(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

2
1
分享到:
评论

相关推荐

    error与Exception的区别

    错误和异常之间的主要区别在于: 1. **严重程度**:`Error`通常表示系统级别的严重问题,而`Exception`则代表运行时的程序错误,更易于修复或恢复。 2. **处理方式**:`Error`通常不被捕获,因为它们表示程序无法...

    Java中Error与Exception的区别.doc

    Java中Error与Exception的区别 Java 中的 Error 和 Exception 是两个不同的...Error 和 Exception 是 Java 中两个不同的概念,它们之间存在着许多不同之处,了解它们的区别对于我们编写高质量的 Java 程序非常重要。

    Java中Error和Exception的区别.pdf

    理解`Error`和`Exception`的区别对于编写健壮的Java代码至关重要。在实际编程中,应该尽量避免让程序抛出`Error`,因为这通常意味着系统层面的问题,而`Exception`则应当被适当地捕获和处理,以提高程序的稳定性和...

    Error类和Exception类剖析

    在Java编程语言中,Error类和Exception类是异常处理的核心组成部分,它们都源自最顶层的Throwable类。了解这两者之间的区别对于编写健壮且可维护的代码至关重要。 首先,我们来看Exception类。Exception是所有可抛...

    捕获Throwable和捕获Exception的区别验证

    而在Java中,所有异常类都继承自`Throwable`类,其中`Exception`和`Error`是两个重要的子类。本文将详细介绍捕获`Throwable`和捕获`Exception`的区别,并通过一个简单的示例来验证这两种方法的不同效果。 #### ...

    2Exception和Error有什么区别1

    Java 语言中的异常处理是其核心特性之一,它通过`Throwable`、`Exception`和`Error`类层次结构来组织和区分不同的错误情况。`Throwable`是所有异常和错误的基类,它分为两大类:`Exception`和`Error`。 `Exception`...

    第2讲 Exception和Error有什么区别1

    【Exception和Error的区别】 在Java编程中,Exception和Error都是基于`Throwable`类的子类,它们构成了Java异常处理机制的基础。理解两者的差异对于编写健壮的代码至关重要。 1. **Exception**: Exception是程序...

    运行时异常与一般异常的区别?

    Exception 则是可以捕捉的,Java 提供了两类主要的异常:runtime exception 和 checked exception。checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。对于这种异常,JAVA 编译器强制要求我们...

    php中error与exception的区别及应用

    error与exception的区别查阅网上资料大多是java的解释,貌似php的异常处理过程与java差不多 java中的Object继承结构如下: Object—->Throwable——–> Exception —-> RuntimeException | Error Error都是unchecked...

    解析Java中所有错误和异常的父类java.lang.Th

    在Java编程语言中,`java.lang.Throwable`是所有错误(Error)和异常(Exception)的顶级父类,它是Java异常处理机制的核心组成部分。这个类位于`java.lang`包中,是Java标准库的一部分,提供了处理运行时问题的标准...

    15-Python中错误和异常处理

    15_Python中错误和异常处理 文章对应的 jupyter notebook 源码资源,可以用来直接练习,欢迎下载使用。 目录如下: 错误(Error) 异常(Exception) 错误与异常的区别 基本的异常处理 try-except try-except-else ...

    [C++][Error Code]如何定义Error Code框架

    首先,我们需要理解错误代码(Error Code)与异常(Exception)的区别。错误代码通常是在函数返回值中携带,而异常则是通过抛出和捕获机制来处理运行时错误。在某些情况下,如性能敏感或资源受限的环境,错误代码...

    Exception

    2. Java异常类层次结构:讲解Java中的Error和Exception的区别,以及它们各自的作用。 3. 自定义异常:如何创建自定义的异常类,以便更好地封装和处理特定的错误情况。 4. 源码分析:可能涉及某个流行的Java库或框架...

    Java异常面试题(2020最新版).pdf

    Java异常面试题(2020最新...Java异常处理是Java开发中非常重要的一部分,了解Java异常架构和异常关键字对于编写高质量的Java代码非常重要。同时,了解Java异常处理最佳实践也可以帮助开发者写出更加健壮和高效的代码。

    03-Java异常面试题.docx

    Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。 Error(错误)是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。这种错误一般表示代码运行时 JVM ...

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    Throwable 类是所有异常和错误的超类,有两个子类 Error 和 Exception,分别表示错误和异常。其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查...

    看完这篇Exception 和 Error,和面试官扯皮就没问题了

    同时,理解 `RuntimeException` 和 `CheckedException` 的区别,以及何时应该使用 `try-catch` 语句来处理异常,是衡量一个 Java 开发者基础技能的重要标志。 总的来说,理解并掌握 Java 中的异常处理机制,不仅能...

    Java异常是Java提供的一种识别及响应错误的一致性机制,Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序

    1. **Error 和 Exception 区别**:Error是系统级别的,不可恢复,而Exception是应用程序可以处理的异常。 2. **运行时异常与受检异常区别**:运行时异常无需在编译时处理,受检异常必须处理。 3. **JVM 处理异常**:...

Global site tag (gtag.js) - Google Analytics