Java 的Throwable、error、exception的区别

1.   什么是异常?数组

   异常本质上是程序上的错误,包括程序逻辑错误和系统错误。好比使用空的引用(NullPointerException)、数组下标越界(IndexOutOfBoundsException)、内存溢出错误等。Throwable 类是 Java 语言中全部错误或异常的超类。有两个重要的子类:Exception(异常)和 Error(错误),两者都是 Java 异常处理的重要子类,各自都包含大量子类。spa

2.  Error线程

   是程序没法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操做无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。 例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 再也不有继续执行操做所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)通常会选择线程终止。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(VirtualMachineError)、类定义错误(NoClassDefFoundError)等。继承

3.  异常和错误的本质区别:异常能被程序自己处理,而错误没法处理。Error是能够catch的,并且也能够向常规Exception同样被处理,并且就算不捕捉的话也只是致使当前线程挂掉,其余线程仍是能够正常运行,若是有须要的话捕捉Error以后也能够作些其余处理。可是Error是一种系统内部的错误,这种错误不像Exception同样是多是程序和业务上的错误是能够恢复的。内存

   怎么catch?catch throwable会把Error和其余继承Throwable的类捕捉到。而catch Exception只会捕捉Exception极其子类,捕捉的范围更小。资源

相关文章
相关标签/搜索