java中常见的一些异常

78 阅读3分钟

1. 空指针异常(NullPointerException)

  • 处理方案

    • 在使用对象之前,检查是否为 null
    • 使用Optional类来避免直接处理null值。
    • 初始化对象时确保不为null。

2. 数组越界异常(ArrayIndexOutOfBoundsException)

  • 描述:当索引超出字符串或数组的有效索引范围时抛出。

  • 处理方案

    • 在访问数组或字符串元素之前,检查索引是否有效。
    • 使用循环或迭代器来遍历数组或集合。

3. 类型转换异常(ClassCastException)

  • 描述:当试图将对象强制转换为不是实例的类时抛出。

  • 处理方案

    • 使用 instanceof 关键字检查对象是否是指定类的实例。
    • 避免不必要的类型转换,使用泛型或接口来减少类型问题。

4. 算术异常(ArithmeticException)

  • 描述:当发生数学错误时抛出,如除以零。

  • 处理方案

    • 在进行除法操作之前,检查除数是否为零。
    • 使用异常处理来捕获并处理 ArithmeticException

5. 数字格式异常(NumberFormatException)

  • 描述:当应用程序试图将字符串转换为一种数值类型,但该字符串没有适当的格式时抛出。

  • 处理方案

    • 在转换之前,使用正则表达式或 String 类的方法检查字符串的格式。
    • 使用异常处理来捕获并处理 NumberFormatException

6. 文件未找到异常(FileNotFoundException)

  • 描述:当试图打开指定路径名表示的文件失败时抛出。

  • 处理方案

    • 在尝试打开文件之前,检查文件路径是否正确。
    • 使用异常处理来捕获并处理 FileNotFoundException

7. SQL异常(SQLException)

  • 描述:当SQL操作失败或无法完成时抛出。

  • 处理方案

    • 检查SQL语句是否正确。
    • 确保数据库连接有效。
    • 使用异常处理来捕获并处理 SQLException

8. 输入/输出异常(IOException)

  • 描述:当发生I/O错误时抛出。这可能发生在读取文件、写入文件或进行网络操作时。

  • 处理方案

    • 确保文件路径和网络连接正确无误。
    • 使用 try-catch 块捕获并处理 IOException
    • 在可能的情况下,使用 try-with-resources 语句来自动关闭资源,以避免资源泄漏。

9. 类定义未找到异常(ClassNotFoundException)

  • 描述:当应用程序试图动态加载类(例如在运行时使用 Class.forName() 方法)时,找不到指定的类时抛出。

  • 处理方案

    • 检查类路径设置是否正确。
    • 确保所需的类文件在类路径中可用。
    • 使用异常处理来捕获并处理 ClassNotFoundException

10. 非法访问异常(IllegalAccessException)

  • 描述:当应用程序试图反射地访问某个类、字段或方法,但当前执行环境不允许这种访问时抛出。

  • 处理方案

    • 检查访问权限设置,确保有足够的权限访问所需的类、字段或方法。
    • 使用异常处理来捕获并处理 IllegalAccessException
    • 考虑修改访问权限或使用反射机制中的 setAccessible(true) 方法(但请注意,这可能会破坏封装性并导致安全问题)。'

11. 不支持的操作异常(UnsupportedOperationException)

  • 描述:当试图调用对象的某个方法,但该方法在当前对象实例上不受支持时抛出。

  • 处理方案

    • 检查文档以了解哪些方法在当前对象上是受支持的。
    • 避免调用不受支持的方法。
    • 使用异常处理来捕获并处理 UnsupportedOperationException

12. 非法参数异常(IllegalArgumentException)

  • 描述:当传递给方法的参数非法或不适当时抛出。例如,当传递了一个负数给期望正数的方法时。

  • 处理方案

    • 在调用方法之前,验证参数的合法性。
    • 使用异常处理来捕获并处理 IllegalArgumentException
    • 提供清晰的错误消息,说明哪个参数是非法的以及为什么非法。