# java 常见异常

NullPointerException-空指针异常

当引用一个 null 对象时,会抛出空指针异常,通常需要检查对象是否为空再做操作。

ClassNotFoundException-类不存在异常

当使用不存在的类进行反射或动态加载时,会抛出此异常,需要检查类名是否正确或类路径是否存在。

IndexOutOfBoundsException-下标越界异常

当使用了不合法的数组或列表下标时,会抛出此异常,通常需要检查下标是否超过了数组或列表长度。

SQLException-操作数据库异常

操作数据库 Sql 语法有问题

NoSuchMethodException-方法未找到异常

当调用不存在的方法名称或参数类型时,会抛出此异常,需要检查方法名和参数是否正确。

IOException-输入输出异常

当读取或写入文件、网络等操作时出现异常,会抛出此异常,需要检查文件是否存在、读写权限等。

OutOfMemoryError
OutOfMemoryErrorDemo.java
package top.rem.rain.synchronized_example;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * @Author: LightRain
 * @Description: 堆内存溢出示例
 * @DateTime: 2023-12-23 21:43
 * @Version:1.0
 **/
public class OutOfMemoryErrorDemo {
    public static void main(String[] args) {
        List<Byte[]> list = new ArrayList<>();
        int i = 0;
        try {
            while (true) {
                list.add(new Byte[1024 * 1024]);
                i++;
            }
        } catch (Throwable e) {
            e.printStackTrace();
            System.out.println("执行了"+i+"次");
        }
        /*
        由于内存不足,虚拟机没有可分配的内存了,垃圾回收器也不能释放更多的内存
        Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
            at java.base/java.lang.Throwable.printStackTrace (Throwable.java:659)
            at java.base/java.lang.Throwable.printStackTrace (Throwable.java:650)
            at top.rem.rain.synchronized_example.volatileDemo1.main (volatileDemo1.java:23)
         */
    }
}