黑马程序员技术交流社区

标题: error和异常有啥区别? [打印本页]

作者: 高顺德    时间: 2013-3-26 14:22
标题: error和异常有啥区别?
本帖最后由 天下 于 2013-3-26 15:53 编辑

error和异常有啥区别?都怎么出现的,要怎么避免这写东西。

作者: 崔宝东    时间: 2013-3-26 14:54
error是严重的错误,编译不能通过。异常里面有运行期异常就是runtimeException这个异常是编译可以通过的,运行时报错的异常;
作者: 谢威    时间: 2013-3-26 14:58
error是继承自父类java.lang.Error,而exception都继承自java.lang.Exception。
Error是Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。
Exception 是Throwable的一种形式的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。
作者: 高顺德    时间: 2013-3-26 15:01
谢威 发表于 2013-3-26 14:58
error是继承自父类java.lang.Error,而exception都继承自java.lang.Exception。
Error是Throwable的子类, ...

那按照你的意思就是说 error也是可以用try处理的?
作者: 小路飞    时间: 2013-3-26 15:05
异常体系:
Throwable
                |--Error
                |--Exception
                        |--RuntimeException
Error:称为错误,由JVM生成并抛出,包括动态链接失败、虚拟机错误等,程序不会对其进行处理。
Exception:所有异常类的父类,其子类对应了各种各应可能出现的异常事件,一般需要用户显式的声明或捕获。

异常有两种:
编译时被检测异常:该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常被标识,代表可以被处理。
运行时异常(编译时不检测) RuntimeException:在编译时,不需要处理,编译器不检查。该异常的发生,建议不处理,让程序停止。需要对代码进行修正。
作者: 陈原野    时间: 2013-3-26 16:40
Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。
Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
作者: HM李超    时间: 2013-3-26 17:09
异常体系:

Java把非正常的情况分为异常(Exception)和错误(Error),它们都继承Throwable。
       Error错误,一般指虚拟机相关问题,如系统崩溃,动态连接失败等等,这种错误无法恢复或者不可捕获,将导致应用程序中断。应用程序无法处理这些错误,因此代码不能使用catch或throws来捕获或者抛出这些Error对象。
        对于Exception异常,是针对程序中发生的人为错误,如空指针异常,数组角标越界等等,这些异常都是人为造成的,在开发中可以用代码进行修复。所以可以使用catch或throws来捕获或者抛出这些Exception对象。
       但是异常又分为Checked异常和Runtime异常,Java人为Checked异常都是可以被处理的异常,所以必须显式处理(try...catch或者抛出)。如果不处理这些异常,程序将无法通过编译。而Runtime异常灵活一点,无须显式抛出,如果需要捕获Runtime异常,可以使用try...catch来捕获。


作者: 郑元皓    时间: 2013-3-26 18:40
Error错误,一般情况下,不编写针对性的代码进行处理,通常是jvm发生的,需要对程序进行修正才用这个异常




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2