异常
异常(exceptional event 的简称)是程序运行期间发生的错误或意外事件。当异常发生时,它会中断程序的执行流程。如果程序能够处理该异常,它可能会继续运行。如果异常未被处理,程序可能会被迫退出。
多种编程语言都支持异常,但使用方式各不相同。例如,异常是Java语言不可或缺的一部分,并且通常用于控制程序的执行流程。Java 包含一个 Exception 类,该类有几十个子类,例如 TimeoutException、UserException 和 IOException。IOException 等子类还包含更具体的异常,例如 FileNotFoundException 和 CharacterCodingException。当找不到文件,或无法识别字符串的字符编码时,就可能“抛出”这些异常。
其他语言只使用异常来捕获基本的运行时错误,例如分配内存失败或系统级错误。例如,当无法分配内存时,C++程序可能会抛出 bad_alloc 异常;当操作系统产生错误时,可能会抛出 system_error 异常。
异常处理
编写良好的计算机程序会检查异常并适当地处理它们。这意味着开发人员必须检查可能发生的异常,并编写用于处理这些异常的代码。如果程序能够良好地处理异常,就可以在不导致程序崩溃的情况下检测和管理意外错误。
异常发生时会被“抛出”,并由程序中的其他代码“捕获”。异常可以使用 throw 语句显式抛出,也可以在 try 子句中隐式抛出。下面是 Java 中“try / catch”语法的示例。以下代码尝试进行除以零的运算,但会抛出 ArithmeticException 异常,并将 0 作为结果返回。
1. int a = 11;
2. int b = 0;
3. int result = 0;
4. try {
5. int c = a / b;
6. result = c;
7. } catch(ArithmeticException ex) {
8. result = 0;
9. }
10. return result;
第 5 行会抛出异常(11 除以 0 时),因此 try 语句的其余部分(第 6 行)不会执行。相反,异常会在第 7 行被捕获,并返回结果 0。
测试你的知识