常见的异常类型主要有编译时异常和运行时异常。
1. 编译时异常
编译时异常是在程序编译时期产生的异常,而这些异常必须要进行处理,也称为checked异常。程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O 问题—— 程序试图打开一个并不存在的远程Socket 端口,或者是打开不存在的文件时。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误),对商用软件系统,程序开发者必须考虑并处理这个问题。Java 编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。在Exception 的子类中,除了RuntimeException 类及其子类外,其他子类都是编译时异常。
特点:编译时异常的特点是在程序编写过程中,Java 编译器就会对编写的代码进行检查,如果出现比较明显的异常就必须对异常进行处理,否则程序无法通过编译。
处理编译时异常的方式如下:
● 使用try...catch 语句对异常进行捕获处理。
● 使用throws 关键字声明抛出异常,让调用者处理。
2. 运行时异常
即使不编写异常处理代码,依然可以通过编译的异常即运行时异常,也称为unchecked异常。这意味着程序存在bug,如数组越界、0 被除、入参不满足规范……。这类异常需要更改程序来避免,Java 编译器强制要求处理这类异常。RuntimeException 类及其子类都是运行时异常。(www.xing528.com)
特点:运行时异常是在程序运行时由Java 虚拟机自动进行捕获处理的,即使没有使用try…catch 语句捕获或使用throws 关键字声明抛出,程序也能编译通过,只是在运行过程中可能报错,如表5-3 所示。
表5-3 Java 中常见的运行时异常
运行时异常错误分析:运行时异常一般是由于程序中的逻辑错误引起的,在程序运行时无法恢复。
【例5.30】检查异常和运行异常示例,如文件5-30 所示。
文件5-30 Example30.java
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。