Java 中各种异常的讲解和举例

1. NullPointerException(空指针异常)

当试图访问一个空对象的方法或属性时,会抛出空指针异常。
举例:

java 复制代码
   String str = null;
   int length = str.length(); // 抛出 NullPointerException

2. ArrayIndexOutOfBoundsException(数组越界异常)

当试图访问数组中不存在的索引时,会抛出数组越界异常。
举例:

java 复制代码
   int[] arr = {1, 2, 3};
   int element = arr[3]; // 抛出 ArrayIndexOutOfBoundsException

3. ArithmeticException(算术异常)

当进行非法的算术运算时,会抛出算术异常。
举例:

java 复制代码
int result = 10 / 0; // 抛出 ArithmeticException

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

当试图打开一个不存在的文件时,会抛出文件未找到异常。
举例:

java 复制代码
   File file = new File("nonexistent.txt");
   FileInputStream fis = new FileInputStream(file); // 抛出 FileNotFoundException
   

5. ClassCastException(类转换异常)

当试图将一个对象强制转换为不兼容的类型时,会抛出类转换异常。
举例:

java 复制代码
   Object obj = "Hello";
   Integer num = (Integer) obj; // 抛出 ClassCastException
   

6. IllegalArgumentException(非法参数异常)

当传递给方法的参数不满足方法预期时,会抛出非法参数异常。
举例:

java 复制代码
 public void divide(int divisor) {
       if (divisor == 0) {
           throw new IllegalArgumentException("除数不能为零");
       }
       // 其他逻辑
   }

7. IOException(输入输出异常)

当发生输入或输出操作失败时,会抛出输入输出异常。
举例:

java 复制代码
   FileInputStream fis = new FileInputStream("file.txt");
       // 其他输入操作
   } catch (IOException e) {
       e.printStackTrace();
   }

8. InterruptedException(中断异常)

当一个线程在等待、睡眠或被阻塞时被中断时,会抛出中断异常。
举例:

java 复制代码
   Thread.sleep(1000);
   } catch (InterruptedException e) {
       e.printStackTrace();
   }

9. SQLException(SQL异常)

当在数据库操作过程中发生错误时,会抛出SQL异常。
举例:

java 复制代码
   Connection conn = DriverManager.getConnection(url, username, password);
       Statement stmt = conn.createStatement();
       ResultSet rs = stmt.executeQuery("SELECT * FROM table");
       // 其他数据库操作
   } catch (SQLException e) {
       e.printStackTrace();
   }

10. NumberFormatException(数字格式异常)

当试图将一个字符串转换为数字,但字符串的格式不正确时,会抛出数字格式异常。
举例:

java 复制代码
    String str = "abc";
    int num = Integer.parseInt(str); // 抛出 NumberFormatException
    

加粗样式

11. IllegalArgumentException(非法参数异常)

当传递给方法的参数不满足方法预期时,会抛出非法参数异常。
举例:

java 复制代码
public void divide(int divisor) {
        if (divisor == 0) {
            throw new IllegalArgumentException("除数不能为零");
        }
        // 其他逻辑
    }

12. IllegalStateException(非法状态异常)

当对象的状态不符合方法调用的前提条件时,会抛出非法状态异常。
举例:

java 复制代码
 public void start() {
        if (isRunning) {
            throw new IllegalStateException("服务已经启动");
        }
        // 启动服务
        isRunning = true;
    }

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

当调用的方法不支持当前对象的操作时,会抛出不支持的操作异常。
举例:

java 复制代码
   List<String> list = Collections.singletonList("Hello");
    list.add("World"); // 抛出 UnsupportedOperationException
    

14. ConcurrentModificationException(并发修改异常)

当在迭代集合或数组时,其他线程对其进行了修改,会抛出并发修改异常。
举例:

java 复制代码
 List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
    for (String str : list) {
        list.remove(str); // 抛出 ConcurrentModificationException
    }

15. OutOfMemoryError(内存溢出错误)

当程序尝试申请更多内存,但可用内存不足时,会抛出内存溢出错误。
举例:

java 复制代码
 List<byte[]> list = new ArrayList<>();
    while (true) {
        list.add(new byte[1024 * 1024]); // 无限申请内存,最终抛出 OutOfMemoryError
    }  

16. StackOverflowError(栈溢出错误)

当方法递归调用层级过深,导致栈空间不足时,会抛出栈溢出错误。
举例:

java 复制代码
  public void recursive() {
        recursive(); // 无限递归调用,最终抛出 StackOverflowError
    }

17. ClassNotFoundException(类未找到异常)

当试图加载不存在的类时,会抛出类未找到异常。
举例:

java 复制代码
   Class.forName("com.example.NonexistentClass"); // 抛出 ClassNotFoundException

18. NoClassDefFoundError(找不到类定义错误)

当类存在于编译时的类路径,但在运行时找不到类定义时,会抛出找不到类定义错误。
举例:

java 复制代码
 public class Main {
        public static void main(String[] args) {
            NonexistentClass obj = new NonexistentClass(); // 编译通过,但运行时抛出 NoClassDefFoundError
        }
    }

以上是常见的异常提示,还有许多可能没有列举,如果发现不懂的异常最好先去看自己的程序逻辑

相关推荐
学传打活2 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng1689 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心12 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552717 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552718 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝19 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552719 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552720 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552722 天前
Java实用类应用精讲
人工智能·1024程序员节
u01030552723 天前
Java I/O核心操作实战
人工智能·1024程序员节