异常:
程序在运行过程中,发生的不正常(用户操作不当、服务终止、程序BUG……)的程序无法正常运作的情况
处理异常的目的:提高程序的稳定性和健壮性,让程序能够正常的运行下去
Java处理异常的方法:
1、抓捕异常(推荐):
尝试着抓到对应的异常,在针对具体问题,具体处理
try {
// 代码块
} catch (XxxException e) {
// 处理异常
} catch (XxxException e) {
// 处理异常
} finally {
}
在没有抓到异常时,程序不会进入catch语法块,但如果try中,某行代码触发了一次,则程序立刻进入到对应的异常处理块(catch)中,进行异常处理
2、抛出异常:
向上抛出
方法名字后面 throws 异常名称 {
}
使用抛出方案后,异常由调用者解决
分类
|-- 运行时异常:继承了RuntimeException的异常
特点是:只有在运行时,才能知道是否会有异常
|-- 非运行时异常(编译型异常):
特点是:在编译时,就会报错,必须处理!!
finally关键字
try{
}finally{
//重要的,必须要执行的、如资源的释放、垃圾的回收等等
}
finally的特点:
不管是否存在异常,finally部分必须要执行
必须要执行的如资源的释放、垃圾的回收等
有return在前面也要运行后再return
finally会给return压力
return 在给finally让步之前运行已经完毕
public class Test04 {
public static void main(String[] args) {
int i = test01();
System.out.println(i);
}
private static int test01(){
int num = 10;
try {
System.out.println(num);
return num ;
} catch (Exception e) {
// TODO: handle exception
System.out.println("发生异常");
}finally {
num++;
System.out.println("必须执行的代码");
}
return num ;
}
}
结果返回的num是10
因为在运行过程中num已经返回了,没有经过num++