java异常
1:什么是异常?
程序出现错误
可能出现在:编译阶段、运行阶段
出现异常后需要对异常进行处理
2:使用try…catch处理异常
try…catch处理方式
语法:
try{
…
…
}catch(异常类型){
…
}
…
try: 用来监测可能会出异常的代码
catch:当异常产生后捕捉异常
try、catch要同时出现
3:异常的继承体系
定义在java.lang包中
Throwable:所有的异常都从该类继承。
两个直接子类:
Error:是一种错误,程序已不可能进行恢复了(不可能从代码层面恢复了)
Exception:与程序有关的异常都继承该类。
异常分类:
1:检查异常
也称编译异常,出现在程序编译阶段。比如:语法错误.
2:运行时异常
也称非检查异常、执行异常、发生在程序的运行阶段。
比如:空指针异常。
所有的运行是异常都是RuntimeException的子类。
常见的异常类:
Throwable
Exception
RuntimeException 其子孙类都是运行时异常
ArithmeticException 算术运算异常
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 数组越界异常
ClassCastException 类转换异常
NumberFormatException: 数字格式化异常
IOException: IO异常
SQLException: SQL异常
EOFException: 文件达到末尾异常
Throwable中的方法:
getMessage() :用于获得异常信息
printStackTrace() :将异常的信息详细的输出
4:finally关键字
无论如何都会执行。不能单独存在,一定是同try…finally或try…finally使用
try{
}catch(Exception e){
}finally{
//无论是否跑出异常,这一部分的代码都会被执行。
}
释放资源
5:多重catch及嵌套try…catch
try{
}catch(XXX e){
}catch(Xxx e){
}catch(XXx e){
}
…
多重catch的情况下,只会进入到其中一个的一个catch块中。
顶层异常(父类)应该放在最后面那个catch中
6:throw与throws关键
throw:用来抛出一个异常。
throws:用来声明异常。
public void m() throws Exception{
}
异常处理:内部处理、外部处理
try...catch... 内部处理
throws、throw: 外部处理
如果throws后面接的是运行时异常,那么其它地方调用该方法时,不要求处理。
如果throws后面接的是检查异常,那么其它地方调用该方法时,必须要处理该异常
处理方式可以是内部处理:try…catch…
也可以是外部处: 使用throws关键字
7:自定义异常
继承Exception即可