📅  最后修改于: 2023-12-03 14:42:55.955000             🧑  作者: Mango
Java是一种强类型语言,程序在编译时需要遵循严格的规则。当程序在执行时,如果违背了这些规则,就会抛出异常,中断程序的正常执行流程。Java中提供了许多内置异常类,程序员可以使用这些内置异常类来优化代码,更好地处理异常情况。本文将简要介绍Java中的内置异常及示例。
Java语言共提供了70多个内置异常类,这里只介绍其中一些常用的异常类。
RuntimeException是一个运行时异常,它是所有非检查型异常的父类,通常发生在程序运行时,例如数组越界、空指针引用等。通常情况下,RuntimeException是由程序员编写的程序错误所致。
IOException是一个受检查的异常,它表示发生了输入/输出错误。读取文件、网络通信、Socket编程等都可能抛出该异常,通常难以预测,因此需要进行异常处理。
ClassNotFoundException也是一个受检查的异常,它表示无法找到指定的类。在动态加载类时,如果找不到对应的类,就会抛出ClassNotFoundException异常。
InterruptedException是一个受检查的异常,它表示线程被中断。通常情况下,线程在等待资源或响应中断时会抛出该异常。
NullPointerException是一个RuntimeException,它表示访问了一个不存在的对象或空的引用。当我们试图对一个空引用调用方法或访问属性时,就会抛出该异常。
FileNotFoundException也是一个受检查的异常,它表示无法找到指定的文件。通常在读取文件时,如果文件不存在或者路径错误,就会抛出该异常。
下面是几个内置异常的示例,可以更好地帮助程序员理解这些异常类的作用。
int[] arr = new int[5];
for (int i = 0; i <= arr.length; i++) {
arr[i] = i;
}
上述代码在遍历数组时,i的值超过了数组的大小,将抛出ArrayIndexOutOfBoundsException异常,从而使程序终止执行。
File file = new File("test.txt");
try {
FileInputStream fis = new FileInputStream(file);
int b;
while ((b = fis.read()) != -1) {
System.out.print((char) b);
}
} catch (IOException e) {
e.printStackTrace();
}
上述代码读取了一个文件,如果文件不存在或者路径错误,就会抛出FileNotFoundException异常。在代码中捕获了该异常,并输出了异常信息。
try {
Class clazz = Class.forName("com.example.Test");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
上述代码通过字符串动态加载了一个类,如果指定的类不存在,则会抛出ClassNotFoundException异常。在代码中捕获了该异常,并输出了异常信息。
Thread thread = new Thread(() -> {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
thread.start();
thread.interrupt();
上述代码启动了一个新线程,使其睡眠1秒钟。在主线程中中断该线程,从而抛出InterruptedException异常。
List<String> list = null;
System.out.println(list.size());
上述代码创建了一个空引用,试图调用该引用的size()方法,就会抛出NullPointerException异常。
String filePath = "C:/test.txt";
try {
FileInputStream fis = new FileInputStream(filePath);
int b;
while ((b = fis.read()) != -1) {
System.out.print((char) b);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
上述代码读取了一个文件,如果文件不存在或者路径错误,就会抛出FileNotFoundException异常。在代码中捕获了该异常,并输出了异常信息。同时,也需要捕获IOException异常,以便处理其他可能发生的输入/输出错误。