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
        }
    }

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

相关推荐
一个通信老学姐5 小时前
专业130+总400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
力姆泰克5 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克5 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
程思扬6 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
转世成为计算机大神6 小时前
网关 Spring Cloud Gateway
java·网络·spring boot·1024程序员节
paopaokaka_luck6 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节
幼儿园园霸柒柒7 小时前
第七章: 7.3求一个3*3的整型矩阵对角线元素之和
c语言·c++·算法·矩阵·c#·1024程序员节
好想有猫猫7 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
2403_875736878 小时前
道品科技的水肥一体化智能灌溉:开启现代农业的创新征程
大数据·人工智能·1024程序员节
小言从不摸鱼9 小时前
【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
人工智能·深度学习·神经网络·机器学习·自然语言处理·transformer·1024程序员节