黑马程序员技术交流社区

标题: Error和RuntimeException异常的区别? [打印本页]

作者: py强子    时间: 2013-7-22 00:33
标题: Error和RuntimeException异常的区别?
本帖最后由 py强子 于 2013-8-3 23:12 编辑

Error异常就是不能处理,让程序停止;
RuntimeException也是让程序停止:
区别在哪?谢谢!

作者: 赵太云    时间: 2013-7-22 07:17
api里说得很细。。。。。。。。。。。。。
作者: 深圳在漂移    时间: 2013-7-22 13:12
   Error表示非常严重的、不可预期的异常情况,通常应用程序无需捕获并处理。
    RuntimeException与Error一样,也是无需捕获的,且就算在方法上throws了RuntimeException,调用该方法的语句也无需catch这些异常。
作者: hoyouly    时间: 2013-7-22 15:27
对于Error  一般不编写针对性的代码对其进行处理。
对于Exception可以使用针对性的处理方式进行处理。

用毕老师的话,如果把Error 和Exception 都看成是疾病的话,那么Error就是不可治愈的病,例如绝症,只能死亡(程序停止)。而Exception 是指可治愈的病,它也有能导致死亡(程序停止)的,就如同感冒一样可以致命一样。但是只要你处理好,例如抛出或者捕获,就有可能不让化险为夷,就让程序正常运行。而绝症是不管你怎么努力,最终还是会死亡的,所以我们在编写程序的时候,对于Error 来说,就是直接把程序停止,因为只有那样才能知道我们到底错在哪里了,而对于Exception 来说,我们一般会捕获或者抛出,而从而让程序能继续执行下去,而不是停止,不知道我这样解释你能不能看明白。

作者: 郭俊    时间: 2013-7-22 21:12
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它。
所以checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。

作者: py强子    时间: 2013-7-22 22:51
hoyouly 发表于 2013-7-22 15:27
对于Error  一般不编写针对性的代码对其进行处理。
对于Exception可以使用针对性的处理方式进行处理。

是Exception下的RuntimeException,并不是和Exception比较。不过还是谢谢啦!
作者: py强子    时间: 2013-7-22 22:53
谢谢各位!
作者: 杨壹    时间: 2013-7-23 14:25
当出现error时,是虚拟机出错,程序员无法处理,程序就停止了,而当出现 RuntimeException时, RuntimeException属于Exception,是经常出的异常,可以catch也可以不catch,比如除数是0;还有一类exception是必须catch的,比如IOException




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