Java中的检查异常与非检查异常
检查异常
检查异常是在编译时发生的异常,也称为编译时异常。这些异常在编译时不能简单地忽略,程序员应该处理这些异常。
例如,如果你的程序使用**FileReader**类从文件读取数据,如果构造函数中指定的文件不存在,则会发生*FileNotFoundException*异常,编译器会提示程序员处理该异常。
示例
import java.io.File;
import java.io.FileReader;
public class FilenotFound_Demo {
public static void main(String args[]) {
File file = new File("E://file.txt");
FileReader fr = new FileReader(file);
}
}如果你尝试编译上面的程序,你将会得到以下异常。
输出
C:\>javac FilenotFound_Demo.java FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown FileReader fr = new FileReader(file); ^ 1 error
**注意** − 由于FileReader类的**read()**和**close()**方法会抛出IOException,你可以看到编译器会通知处理IOException以及FileNotFoundException。
非检查异常
非检查异常是在运行时发生的异常,也称为**运行时异常**。这些异常包括编程错误,例如逻辑错误或API的不当使用。运行时异常在编译时会被忽略。
例如,如果你的程序中声明了一个大小为5的数组,并尝试调用数组的第6个元素,则会发生*ArrayIndexOutOfBoundsException*异常。
示例
public class Unchecked_Demo {
public static void main(String args[]) {
int num[] = {1, 2, 3, 4};
System.out.println(num[5]);
}
}如果你编译并执行上面的程序,你将会得到以下异常。
输出
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Exceptions.Unchecked_Demo.main(Unchecked_Demo.java:8)
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C编程
C++
C#
MongoDB
MySQL
Javascript
PHP