异常与错误
程序运行时必然会发生意外行为。这可能是由于异常或错误造成的。异常是可以干扰正常程序流的事件。错误是可以认为是不可恢复的情况。异常主要与应用程序本身有关,而错误则与运行程序的系统有关。
什么是例外?
异常是一个可以干扰正常程序流的事件。exception这个名字来自“exception event”。引发异常是创建异常对象并将其交给运行时系统的过程。异常对象是由发生异常的方法创建的。异常对象包含有用的信息,例如异常的类型和描述。当运行时系统接收到异常对象时,它将尝试在调用堆栈中找到某人来处理它,方法是按相反的顺序遍历它(方法被调用的顺序)。调用堆栈是在发生异常的方法之前调用的方法的有序列表。如果运行时系统找到具有异常处理程序的方法,则该运行时系统将成功。异常处理程序是可以正式处理所述异常的代码块。如果运行时系统找到适当的处理程序(即异常类型与可以处理的类型匹配),它将把异常对象传递给处理程序。这叫做捕捉异常。但是,如果无法处理异常,程序将终止。在Java中,异常继承自“Throwable class”。NullPointerException和ArrayIndexOutOfBoundsException是Java中两个常见的异常。
什么是错误?
错误是一种可以被认为是不可恢复的情况,例如程序需要比可用内存更大的内存量。这些错误无法在运行时处理。如果发生错误,程序将终止。在Java中,错误继承自Throwable类。错误通常代表程序员(或应用程序)不应试图捕捉的严重问题。错误仅仅是不正常的情况,在正常情况下是不可能发生的,因此是无法预见的。例如,OutOfMemoryError、stackoverflowerrror和ThreadDead就是这样的错误。方法永远不应该有错误处理程序。
异常和错误的区别是什么?