用毕老师的话,如果把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