异常这个术语是“异常事件”这个词语的简称。

定义:异常是一个事件,发生在程序的执行期间,破坏了程序指令的正常流程。

当一个方法出现了错误,该方法创建一个对象,并把它提交给运行时系统。这个对象,就叫做异常对象,包含了错误信息,包括了它的类型以及错误发生时程序的状态。创建一个异常对象,并把它提交给运行时系统就叫做抛出异常

当一个方法抛出一个异常,运行时系统试图发现某物去处理它。处理这个异常的“某物”有可能是调用了错误发生处的方法的有序方法列表中的任一方法。这个方法列表被称为调用栈(call stack),见下图:

The call stack


运行时系统搜索调用栈中包含可以处理这个异常的代码块的方法。这个代码块叫做异常处理器。这个搜索从错误发生的那个方法开始,并在调用栈中以调用顺序相反的顺序进行搜索。当一个适当的处理器被发现,运行时系统就把这个异常交给这个处理器。如果抛出的异常对象的类型和处理器可以处理的类型相匹配,异常处理器就会认为是合适的。

异常处理器的挑选称之为捕获异常。如果运行时系统穷尽了调用栈中的所有方法,都没有找到合适的异常处理器,就像下图所示,运行时系统将终止(因此程序也会跟着终止)。

在调用栈中搜索异常处理器



使用异常管理错误比起传统的错误管理技术有不少的优势,你可以从Advantages of Exceptions章节中获取更多相关信息。





原文地址