Java八大异常

Java是一种面向对象的编程语言,它提供了丰富的异常处理机制。异常是在程序执行过程中出现的问题或错误的表示。当异常出现时,程序可以通过异常处理机制来处理异常,使程序能够继续执行,而不会中断。

Java提供了八种不同的异常类型,也被称为Java八大异常。它们分别是:

  1. NullPointerException(空指针异常):当尝试访问一个空对象的成员或调用一个空对象的方法时,会抛出空指针异常。

示例代码:

String str = null;
int length = str.length(); // 抛出NullPointerException
  1. ArrayIndexOutOfBoundsException(数组越界异常):当尝试访问数组中不存在的元素时,会抛出数组越界异常。

示例代码:

int[] arr = new int[5];
int num = arr[6]; // 抛出ArrayIndexOutOfBoundsException
  1. NumberFormatException(数字格式化异常):当尝试将一个字符串转换为数字时,但字符串的格式不符合要求时,会抛出数字格式化异常。

示例代码:

String str = "abc";
int num = Integer.parseInt(str); // 抛出NumberFormatException
  1. ArithmeticException(算术异常):当进行除零操作或其他不合法的算术运算时,会抛出算术异常。

示例代码:

int num1 = 10;
int num2 = 0;
int result = num1 / num2; // 抛出ArithmeticException
  1. ClassCastException(类转换异常):当尝试将一个对象转换为不兼容的类类型时,会抛出类转换异常。

示例代码:

Object obj = new Integer(10);
String str = (String) obj; // 抛出ClassCastException
  1. FileNotFoundException(文件未找到异常):当尝试打开一个不存在的文件时,会抛出文件未找到异常。

示例代码:

File file = new File("file.txt");
Scanner scanner = new Scanner(file); // 抛出FileNotFoundException
  1. IOException(输入输出异常):当发生输入输出操作异常时(如读取文件失败、网络连接丢失等),会抛出输入输出异常。

示例代码:

try {
    FileReader fileReader = new FileReader("file.txt");
    // 读取文件内容
    fileReader.close();
} catch (IOException e) {
    // 处理异常
}
  1. RuntimeException(运行时异常):运行时异常是一种不需要强制处理的异常,它们通常由程序逻辑错误引起。

示例代码:

int[] arr = new int[5];
int num = arr[-1]; // 抛出ArrayIndexOutOfBoundsException,属于RuntimeException

异常处理是Java程序设计中的重要部分。通过捕获和处理异常,程序可以更好地应对出现的问题,并进行相应的处理或修复。在处理异常时,可以使用try-catch语句来捕获异常,并提供相应的处理代码。可以使用throws关键字将异常抛出给上一级调用者,以延迟异常的处理。

以下是一个使用try-catch语句处理异常的示例代码:

public class ExceptionExample {
    public static void main(String[] args) {
        try {
            int[] arr = new int[5];
            int num = arr[6]; // 尝试访问数组越界的元素
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("出现数组越界异常");
            e.printStackTrace();
        }
    }
}

在上述代码中,我们使用try-catch语句捕获了数组越界异常,并在catch块中打印了异常信息。通过调用e.printStackTrace()方法,可以打印出完整的异常堆栈信息,以便更好地排查问题。

除了使用try-catch语句处理异常外,还可以使用throws关键字将异常抛出给上一级调用者进行处理。以下是一个使用throws关键字抛出异常的示例代码:

public class ExceptionExample {
    public static void main(String[] args) throws FileNotFoundException {
        FileReader fileReader = new FileReader("file.txt");
        // 读取文件内容
        fileReader.close();
    }