异常
什么是异常
就是程序错误终端,异常一旦出现就会中断程序。
所有以异常的父类都是Throwable
Throwable有两个子类Exception、Error,分别表示错误与异常,通常子类都会以Exception和Error为后缀
Error
Error错误表示的JVM出现了问题,通常由两个常见的错误分别是
StackOverflowError:堆栈内存溢出(通常死循环会出现)
OutOfMemoryError:内存溢出(没有可用的内存的时候会出现 通常递归的时候会出现)
Exception
Exception异常,表示程序的逻辑错误导致的问题,通常程序员要解决
NullPointewrException:空指针异常(通常调用空对象的时候会出现)
ArrayIndexOutOfBoundsException:数组越界异常(通常调用数组以外的索引会出现)
ParseException:解析的时候格式错误异常(通常是用户不按照格式填写出现的异常)
ClassCastException:对象转换异常(通常两个互不相干的对象转换的时候出现)
AithmeticException:算数异常(通常算数错误例:10/0的时候会出现)
NumberFormatException:转换封装类型得时候会由该异常
捕获异常
- 捕获异常 并处理
- 自身异常抛出
捕获异常格式
try{
}catch(异常 e){
}catch(异常 e){
}
...
finally{
}
异常类常用的方法
方法 | 作用 |
---|---|
public String getMessage() | 获得错误信息 |
public void printStackTrace() | 打印程序的异常详细信息 |
finally语句块
必须再try{}语句块后他的作用是不管程序出不出现异常都会输出finally语句块之中的内容,但是出现程序的异常终止不会执行finally语句块的内容,比如说System.exit(0);
抛出异常
就是自身不处理异常的信息 ,向上级抛出异常的提示,使用throws关键字
语法:
修饰符 返回值类型 方法名(参数列表...) throws 异常A,异常B...{
}
throw关键字
throw的作用是手动抛出具体的异常对象,也可以代替return做返回来结束一个方法
throw与throws之间的关系
throws和throw没有任何的关系
throw是用来返回一个异常的
throws表示方法不需要做异常的处理,也可以用于提醒调用者异常处理
编译异常与运行时异常
RuntimeException和其子类属于运行时异常,运行的时候才会报错,等到出现的时候再处理
Exception编译时期异常,编译的时候不处理会报错
自定义异常
需要自行继承异常类对象,继承RuntimeException运行时异常,继承Exception编译时期异常
好处:
- 从类的名字可以看出其异常的意思
- 可以对异常类进行封装,实其错误的时候可以返回错误的对应信息