检查型异常和非检查型异常——Java
Java语言规范使从Error类或Runtime Ex ceprion类派生的所有异常成为未检查的异常,而所有其他异常成为已检查的异常。 这是一个非常有用的术语。
但是,仅凭这种方式很难理解。 我检查了一些信息,并使用一些简单的语言来解释它们。
检查型异常
检查型异常,简单来说就是在现实中无法避免的,我们在设计程序时无法预知的异常抛出。例如:读取一个文件的内容。如果这个文件不存在或者程序没有读取权限时,就会抛出一个异常。我们必须要用 throws 声明它会出现的异常类型,用 try...catch 来捕获异常,并指明出现错误时要执行的操作。例如:
试图超越文件末尾继续读取数据;
试图打开一个不存在的文件;
试图根据给定的字符串查找 Class 对象,而这个字符串表示的类并不存在。
这类检查型异常必须要在代码中声明出来,它是不可避免和预知的。如果没有声明,集成开发环境 IDE 将会报错!它会帮我们检查,故称 检查型异常。
这类异常我们必须要解决。
非检查型异常
非检查型异常,就是在代码实现阶段就可以预知和避免的一些异常,例如从 RuntimeExcrption 类 和 Error 类 中继承的那些非检查型异常,RuntimeExcrption 类包括:
错误的强制类型转换;
数组访问越界;
访问null指针。
这些异常不需要在代码中生命,IDE 也不会报错指出。这些异常我们完全有能力去避免和预知,IED 不会帮我们检查这其中的错误!故称为 非检查型异常。
同时,我们也不需要生命 Java 的内部错误,即从 Error 类 继承的异常。任何程序代码都可能抛出那样的异常,而我们对此完全无法控制。
结语
这就是对在 Java 中,检查型异常和非检查型异常的简单浅显理解,希望对 Java 的初学者有所帮助。