文章目录
- java.lang.IllegalStateException: Duplicate key 张三
- java.lang.NumberFormatException: For input string: "张三"
- java.lang.ArrayIndexOutOfBoundsException: 5
- java.lang.IndexOutOfBoundsException: Index: 3, Size: 2
- java.lang.StringIndexOutOfBoundsException: String index out of range: 9
- java.lang.ArithmeticException: / by zero
- java.lang.ClassNotFoundException: AA
- java.lang.InstantiationException: com.example.chang.controller.AInterface
- java.lang.ClassCastException:
- java.lang.NoSuchFieldException
- java.lang.NoSuchMethodException
- java.lang.IllegalAccessError:
java.lang.IllegalStateException: Duplicate key 张三
异常报错示例:
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 张三
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1253)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
报错代码示例:
AChang a = new AChang();
a.setId(2);
a.setClassName("张三");
a.setAge(18);
AChang b = new AChang();
b.setId(4);
b.setClassName("李四");
b.setAge(20);
AChang c = new AChang();
c.setId(2);
c.setClassName("王五");
c.setAge(22);
List<AChang> myList= new ArrayList<>();
myList.add(a);
myList.add(b);
myList.add(c);
Map<Long, String> entityMap = myList.stream().collect(Collectors.toMap(AChang::getId, AChang::getClassName));
报错原因分析:
直接使用java8的stream方式,报错也很清楚,就是key重复 [a.setId(2)和c.setId(2) 两个值重复],也就是说在使用toMap方法时,有重复的key值导致了这个报错
报错解决方法:
java8中转换成map时,提供了第三个参数,代表的是重复key的值该如何存放。
比如 下面代码:当出现重复时,存放最后一次的value,
Map<Long, String> entityMap = myList.stream().collect(Collectors.toMap(AChang::getId, AChang::getClassName,(oldValue,newValue) -> newValue));
java.lang.NumberFormatException: For input string: “张三”
异常报错示例:
Exception in thread "main" java.lang.NumberFormatException: For input string: "张三"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
报错代码示例:
String str = "张三";
System.out.println(Integer.valueOf(str));
报错原因分析:
数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。
java.lang.ArrayIndexOutOfBoundsException: 5
异常报错示例:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at com.example.chang.controller.SS.main(SS.java:62)
报错代码示例:
int[] arr = {1,2,3};
System.out.println(arr[5]);
报错原因分析:
数组索引越界异常。数组的下标是从0开始的;当对数组的索引值为负数或大于等于数组大小时抛出。
java.lang.IndexOutOfBoundsException: Index: 3, Size: 2
异常报错示例:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at com.example.chang.controller.SS.main(SS.java:67)
报错代码示例:
List<String> listStr = new ArrayList<>();
listStr.add("张三");
listStr.add("李四");
System.out.println(listStr.get(3));
报错原因分析:
索引越界异常。列表的下标是从0开始的;当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。
java.lang.StringIndexOutOfBoundsException: String index out of range: 9
异常报错示例:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 9
at java.lang.String.substring(String.java:1963)
报错代码示例:
String str1 = "abcdefg";
System.out.println(str1.substring(5,9));
报错原因分析:
字符串索引越界异常。当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。
java.lang.ArithmeticException: / by zero
异常报错示例:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.example.chang.controller.SS.main(SS.java:73)
报错代码示例:
int i = 5;
int y = 0;
System.out.println(i/y);
报错原因分析:
算术条件异常。例如:整数除零等
java.lang.ClassNotFoundException: AA
异常报错示例:
Exception in thread "main" java.lang.ClassNotFoundException: AA
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
报错代码示例:
Class a1 = Class.forName("AA");
AChang a2 = (AChang) a1.newInstance();
报错原因分析:
找不到类而报异常。AA.java类没有找到 ,当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。
java.lang.InstantiationException: com.example.chang.controller.AInterface
异常报错示例:
Exception in thread "main" java.lang.InstantiationException: com.example.chang.controller.AInterface
at java.lang.Class.newInstance(Class.java:427)
at com.example.chang.controller.SS.main(SS.java:76)
报错代码示例:
Class a1 = Class.forName("com.example.chang.controller.AInterface");
AInterface a2 = (AInterface) a1.newInstance();
报错原因分析:
实例化异常。AInterface是一个接口类;当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。
java.lang.ClassCastException:
异常报错示例:
Exception in thread "main" java.lang.ClassCastException: com.example.chang.controller.AChang cannot be cast to com.example.chang.controller.BankBo
at com.example.chang.controller.SS.main(SS.java:82)
报错代码示例:
Class a1 = Class.forName("com.example.chang.controller.AChang");
BankBo a2 = (BankBo) a1.newInstance();
报错原因分析:
类造型异常。假设有类AChang和BankBo (AChang不是BankBo 的父类或子类),a1是AChang的实例,那么当强制将a1构造为类BankBo 的实例时抛出该异常。该异常经常被称为强制类型转换异常。
java.lang.NoSuchFieldException
报错原因分析:
属性不存在异常。当访问某个类的不存在的属性时抛出该异常。一般你一个类中引用其他lib包,当lib包版本不同时类某个属性可能不存在。
java.lang.NoSuchMethodException
报错原因分析:
方法不存在异常。当访问某个类的不存在的方法时抛出该异常。一般你一个类中引用其他lib包,当lib包版本不同时类某个方法可能不存在。
java.lang.IllegalAccessError:
报错原因分析:
违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。在应用系统启动时报错,看看引用的包版本是否有冲突。