Java异常

1. java.lang.ClassCastException

复制代码
import java.util.ArrayList;
class Apple {
    private static long counter;
    private final long id = counter++;
    public long id() {
        return id;
    }
}
class Orange {
}
public class AppleAndOrangeWithoutGenerics {
    public static void main(String[] args) {
        ArrayList apples = new ArrayList();
        for (int i = 0; i < 3; i++) {
            apples.add(new Apple());
        }
        apples.add(new Orange());
        for (int i = 0; i < apples.size(); i++) {
            System.out.println(((Apple) apples.get(i)).id());
        }
    }
}
输出结果如下:
0
1
2
Exception in thread "main" java.lang.ClassCastException: com.zhz.holding.Orange cannot be cast to com.zhz.holding.Apple
    at com.zhz.holding.AppleAndOrangeWithoutGenerics.main(AppleAndOrangeWithoutGenerics.java:25)
复制代码

类型转换异常:运行时强制将Orange对象转换为Apple对象,出现异常。

 

2. java.lang.UnsupportedOperationException

复制代码
import java.util.*;
public class AddingGroups {
    public static void main(String[] args) {       
        List<Integer> list = Arrays.asList(16,17,18,19,20);
        for (Integer integer : list) {
            System.out.println(integer);
        }
        System.out.println("----------");
        list.set(1, 99);
        for (Integer integer : list) {
            System.out.println(integer);
        }
        list.add(21);
    }
}
复制代码
复制代码
输出结果如下:
16 17 18 19 20 ---------- 16 99 18 19 20 ---------- Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(Unknown Source) at java.util.AbstractList.add(Unknown Source) at com.zhz.holding.AddingGroups.main(AddingGroups.java:28)
复制代码

不支持的操作异常,Arrays.asList(),其底层表示的是数组,不能调整尺寸,因此在尝试改变数组尺寸是会报错。

 

3. java.lang.IllegalArgumentException

复制代码
 1 public class MyArrayListDemo {
 2     public static void main(String[] args) {
 3         MyArrayList1 list = new MyArrayList1(-1);
 4         System.out.println(list.elementData.length);
 5     }
 6 }
 7 class MyArrayList1 {
 8     private static final Object[] EMPTY_ELEMENTDATA = {};
 9     transient Object[] elementData;
10     public MyArrayList1(int initialCapacity) {
11         if (initialCapacity > 0) {
12             this.elementData = new Object[initialCapacity];
13         } else if (initialCapacity == 0) {
14             this.elementData = EMPTY_ELEMENTDATA;
15         } else {
16             throw new IllegalArgumentException(
17                     "Illegal Capacity: " + initialCapacity);
18         }
19     }
20 }
复制代码
Exception in thread "main" java.lang.IllegalArgumentException: Illegal Capacity: -1
    at com.zhz.util.MyArrayList.<init>(MyArrayList.java:69)
    at com.zhz.util.MyArrayListDemo.main(MyArrayListDemo.java:6)

IllegalArgumentException此异常表明向方法传递了一个不合法或不正确的参数。传递了负的容量值时,报出异常。

 

posted @   淡忘的江南  阅读(524)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示