异常

1.什么是异常?

阻止程序正常执行
eg:
    int a=10;
    int b=0;
    int c=a/b;
Exception in thread "main" java.lang.ArithmeticException: / by zero

Object->Throwable:
                Error:虚拟机内部发生的错误,我们不能处理;比如:内存溢出。
                Exception:需要程序猿处理的异常
                        受检异常:(编译时检查)eg:SQLException  IOException  ClassNotFoundException
                        非受检异常:(运行时检查)RuntimeException:(继承RuntimeException的是运行时异常)
                                                                ->NullPointException
                                                                ->ArithmeticException
                                                                ->ClassCastException
                                                                ->ArrayIndexOutOfBoundsException

2.try与catch关键字

try:不能单独使用
catch:先子类,后父类,顺序不能颠倒,平级时(都是子类)顺序无所谓,一个一个匹配,匹配成功,则执行语句,然后退出catch,不再匹配。
    try {//把有可能发生异常的代码段放入try块中
        c=a/b;
    } catch (ArithmeticException exception) {//捕获异常,处理异常,使程序可以正常执行。
        System.out.println("算术异常,除数为0");
    }catch (Exception e) {
        System.out.println("发生了异常");
    }
finally:异常的统一出口 

3.异常处理过程分析

1.一旦发生异常,则虚拟机自动产生一个异常类的实例化对象。
2.存在try,则catch匹配异常,匹配成功则处理异常,失败则退出,系统报告错误。  

4.finally关键字

不管是否产生异常,最终都要执行此代码。

***:finally与final的区别?
    finally:用来异常处理
    final:声明常量,修饰作用
***:既有finally又有return,执行顺序?
    public static int div(int a,int b) {
    int result=0;
    try {
        result=a/b;//执行该语句后,遇到return,将return的结果保存,先判断是否有finally,
                        若有,先执行finally,若finally块里也有return,则直接执行该return语句,结束;
                        若finally里没有return,则执行之前保存的return;
                        若没有finally,直接执行return。

        return result;
    } catch (Exception e) {
        e.printStackTrace();
        return 0;
    }finally{
        System.out.println("除法执行结束");
    //  return -1;
    }
}

System.out.println(div(10, 2));//finally没有return,除法执行结束  5
                                //finally有return,除法执行结束 -1

5.throw与throws关键字

throw在程序中手动抛出一个异常,与throws配套使用
throws:方法中不处理,交给调用处处理。如果没有处理,默认JVM处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值