异常/错误
程序运行过程中,可能会发生一些不被期望的效果,肯定会阻止我们的程序按指令去执行
这种不被预期出现的效果,肯定需要抛出来告诉我们
在JAVA中有一个定义好的Throwable(可以抛出的)
Error错误
通常是一些物理性的,JVM虚拟机本身出现的问题,程序指令是处理不了的
Exception异常
是一种不正常的现象,通常是给定的指令程序产生了一些不合规范的事情
Throwable
Error(错误)
StackOverflowError
OutOfMemoryError
Exception(异常)
RuntimeException(运行时)
IOExceotion
异常的分支体系
运行时异常(非检查异常)
Error和RuntimeException都算作运行时异常
javac编译的时候,不会提示发现的
在程序编写的时候不要求必须做处理,如果我们愿意可以添加处理手段(try throws)
要求大家出现这样的异常的时候,知道怎么产生及如何修改
1.InputMisMatchExceotin 输入不匹配
int value = input.nextInt();// abc
2.NumberFormatException 数字格式化
int value = Integer.parseInt("123.45")
3.NegativeArraySizeException 数组长度负数
int Array = new int[-2]
4.NullPointerException 空指针异常
int[][] array = new int[3][];
array[0][0] = 10;
Person p = null;
p.getName();
5.AirthmeticExceotion 数字异常
10/0 整数不允许除0 infinity小数除0会产生无穷
6.ClassCastException 造型异常
Person p = new Teacher();
Student s = (Student) p;
7.ArrayIndexOutOfBoundsException 数组索引越界
int[] array ={1,2,3};
array[5];
8.StringIndexOutOfBoundsException 字符串越界
String str = "abc";
str.charAt(5);
9.IndexOutOfBoundsException 集合越界
List家族
ArrayList list = new ArrayList();
list.add();list.add();ist.add();
list.get(5);
10.IllegalArguementException 非法参数异常
ArrayList list = new ArrayList(-1);
编译时异常(检查异常)
除了Error和RuntimeException以外的其他异常
javac编译的时候 强制要求我们必须为这样的异常处理(try或throws)
因为这样的异常在程序运行中可能会产生问题
异常产生后后续的所有执行就被停止啦
1.InterruptException
try{
Thead.sleep(5000);
}catch(Exception e){
}
添加处理异常的手段
处理异常不是异常消失了
处理异常指的是 处理掉异常之后 后续的代码不会因为此异常停止执行
两种手段
try{}catch(){}{finally{}}
try不能单独出现
后面必须添加catch或finally
catch有一组括号(NullPointerException)目的是为了捕获一组异常
catch可以有多个存在
捕获的异常直接没有任何的继承关系
捕获的异常需要从小到大捕获