常见的异常及处理

73 阅读2分钟

1. NullPointerException

异常描述:尝试使用null引用时抛出。

处理方法:检查对象是否为null。

public void exampleMethod(Object obj) {
    if (obj != null) {
        obj.toString();
    } else {
        System.out.println("对象为null");
    }
}

2. IndexOutOfBoundsException

异常描述:索引越界,如访问数组的非法索引。

处理方法:确保索引在有效范围内。

public void accessArray(int[] array, int index) {
    if (index >= 0 && index < array.length) {
        System.out.println(array[index]);
    } else {
        System.out.println("索引越界");
    }
}

3. NumberFormatException

异常描述:字符串转换为数字失败。

处理方法:确保字符串是有效的数字格式。

public void parseNumber(String numberStr) {
    try {
        int number = Integer.parseInt(numberStr);
        System.out.println("数字是:" + number);
    } catch (NumberFormatException e) {
        System.out.println("无效的数字格式");
    }
}

4. FileNotFoundException

异常描述:文件未找到。

处理方法:检查文件路径是否正确。

public void readFile(String filePath) {
    try {
        File file = new File(filePath);
        if (file.exists()) {
            System.out.println("文件存在");
        } else {
            System.out.println("文件未找到");
        }
    } catch (Exception e) {
        System.out.println("文件操作异常:" + e.getMessage());
    }
}

5. SQLException

异常描述:数据库操作异常。

处理方法:检查SQL语句和数据库连接。

public void executeQuery(String query) {
    try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "user", "password");
         Statement stmt = conn.createStatement()) {
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            System.out.println(rs.getString("column_name"));
        }
    } catch (SQLException e) {
        System.out.println("数据库操作异常:" + e.getMessage());
    }
}

6. IOException

异常描述:输入输出异常。

处理方法:确保文件路径正确,文件可读可写。

public void writeFile(String content, String filePath) {
    try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
        writer.write(content);
    } catch (IOException e) {
        System.out.println("文件写入异常:" + e.getMessage());
    }
}

7. ClassNotFoundException

异常描述:找不到类定义。

处理方法:确保类路径正确。

public void loadClass(String className) {
    try {
        Class<?> cls = Class.forName(className);
    } catch (ClassNotFoundException e) {
        System.out.println("找不到类:" + className);
    }
}

8. ArithmeticException

异常描述:算术异常,如除以零。

处理方法:检查除数是否为零。

public void divide(int numerator, int denominator) {
    try {
        int result = numerator / denominator;
        System.out.println("结果是:" + result);
    } catch (ArithmeticException e) {
        System.out.println("除数不能为零");
    }
}

9. IllegalArgumentException

异常描述:非法参数异常。

处理方法:检查参数是否合法。

public void validateArgument(String arg) {
    if (arg == null || arg.isEmpty()) {
        throw new IllegalArgumentException("参数不能为空");
    } else {
        System.out.println("参数有效");
    }
}

10. UnsupportedOperationException

异常描述:不支持的操作。

处理方法:检查操作是否被支持。

public void unsupportedOperation() {
    try {
        // 假设这是一个不支持的操作
        throw new UnsupportedOperationException("此操作不支持");
    } catch (UnsupportedOperationException e) {
        System.out.println("不支持的操作:" + e.getMessage());
    }
}