Error and Exception

来源:互联网 发布:网盘 知乎 编辑:程序博客网 时间:2024/06/05 22:39
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况.

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出,VirtualMachineError ,ThreadDeath ,LinkageError 。不可能指望程序能处理这样的情况。 另一方面,error 是虚拟机的问题(通常是这样,但也可能是操作系统的问题)。引用Java 文档中关于error 的说明:“Error 是Throwable 的子类,它的出现说明出现了严重的问题。

error 跟exception 抛出的方式大体相同的,只有一点不同。就是一个抛出error 的方法不需要对此进行声明

简要的叙述 error 和 exception

Error 和 Exception 都继承自 Throwable ,他们下列不同处:
Exceptions
1 .可以是 可被控制 (checked) 或 不可控制的 (unchecked)
2 .表示一个由程序员导致的错误
3 .应该在应用程序级被处理
Errors
1 .总是 不可控制的 (unchecked)
2 .经常用来用于表示系统错误或低层资源的错误
3 .如何可能的话,应该在系统级被捕捉


无论是 checkException Runtime Exception 还是 Error 都是继承自 Throwable


异常:

Java 提供了两种 Exception 的模式,一种是执行的时候所产生的 Exception (Runtime Exception) , 另外一种则是受控制的 Exception (Checked Exception) 。所有的 Checked Exception 均从 java.lang.Exception 继承而来,而 Runtime Exception 则继承 java.lang.RuntimeException 或 java.lang.Error ( 实际上 java.lang.RuntimeException 的上一层也是 java.lang.Exception) 。
Checked Exception 中,并不表示这段程序码一定会收到 CException ,但它的用意在于提醒呼叫者,执行这个 method 可能产生的意外,而使用者也必须要能针对这个意外做出相对应的处理方式。
程序在执行的时候,也不见得会真的产生 NullPointerException ,这种 Exception 叫做 runtime exception 也有人称为 unchecked exception ,产生 Runtime Exception 的 method ( 在这个范例中是 method2) 并不需要在宣告 method 的时候定义它将会产生哪一种 Exception
一般而言, Checked Exception 表示这个 Exception 必须要被处理,也就是说程序设计者应该已经知道可能会收到某个 Exception( 因为要 try catch 住 ) ,所以程序设计者应该能针对这些不同的 Checked Exception 做出不同的处理。
  而 Runtime Exception 通常会暗示着程序上的错误,这种错误会导致程序设计者无法处理,而造成程序无法继续执行下去。


RuntimeException 如: IllegalArgumentException , IndexOutOfBoundsException , NullPointerException , SecurityException , 等
0 0