原文:
What Is an Exception?
The term exception is shorthand for the phrase “exceptional event.”
Definition: An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program’s instructions.
When an error occurs within a method, the method creates an object and hands it off to the runtime system. The object, called an exception object, contains information about the error, including its type and the state of the program when the error occurred. Creating an exception object and handing it to the runtime system is called throwing an exception.
After a method throws an exception, the runtime system attempts to find something to handle it. The set of possible “somethings” to handle the exception is the ordered list of methods that had been called to get to the method where the error occurred. The list of methods is known as the call stack (see the next figure).
The call stack showing three method calls, where the first method called has the exception handler.
The call stack.
The runtime system searches the call stack for a method that contains a block of code that can handle the exception. This block of code is called an exception handler. The search begins with the method in which the error occurred and proceeds through the call stack in the reverse order in which the methods were called. When an appropriate handler is found, the runtime system passes the exception to the handler. An exception handler is considered appropriate if the type of the exception object thrown matches the type that can be handled by the handler.
The exception handler chosen is said to catch the exception. If the runtime system exhaustively searches all the methods on the call stack without finding an appropriate exception handler, as shown in the next figure, the runtime system (and, consequently, the program) terminates.
The call stack showing three method calls, where the first method called has the exception handler.
Searching the call stack for the exception handler.
Using exceptions to manage errors has some advantages over traditional error-management techniques. You can learn more in the Advantages of Exceptions section.
译文:
异常这一术语是异常缩写的简称。
定义:一个异常是一个发生在程序执行中的事件,这回打乱程序的正常流程。
当一个方法中碰到了一个错误,这个方法会创建一个对象并将它传递给正在运行的系统。这个对象我们称之为异常对象,他包含了关于这个错误的信息,这个错误的类型以及当程序碰到这个错误时的状态。创建一个异常对象并且将它传递给运行的系统我们称之为抛出一个异常。
在方法抛出一个异常之后,运行的系统会尝试去找一些事去解决它。这些可能去解决这个异常的“一些事”是一套被调用来获取会发生错误的方法的有序方法集合。这个方法集合被称作调用栈。
运行的系统为一块能解决异常的代码寻找调用栈。这一块代码被称为异常处理程序。搜索从方法发生错误时开始,然后调用方法的相反顺序遍历调用栈。当一个合适的处理程序被发现,运行的系统会将错误传递给这个处理程序。如果异常对象的类型被抛出时,和被异常处理程序处理的的类型相匹配,则会被认为是合适的一个异常处理程序。
异常处理程序的选择被称为是捕获异常。如果运行的系统调用栈搜索了所有的方法,也没有发现一个合适的异常处理程序,那么如下图所示,运行的程序会被终止。
与传统的错误管理技术相比,使用异常管理错误具有一些优势。你会在异常的优点课程中学习到。