try/catch/finally

try{

//可能产生异常的代码(监控区域)

}catch(//异常类型+标识符){

//捕获异常并处理它(异常处理程序)

}

如果try代码没有异常,执行完try所有代码,不执行catch里的代码。

如果try里代码出现异常,try后续代码不执行。

如果catch捕获的异常类型错误(异常类型不是catch()里的类型),那么程序崩溃。

public class YiChang {
    public static void main(String[] args) {
        System.out.println("输入被除数:");
        Scanner input=new Scanner(System.in);
        int a=input.nextInt();
        System.out.println("输入除数:");
        int b=input.nextInt();
        try {
            int result=a/b;
            System.out.println(a+"/"+b+"="+result);
        }catch (ArithmeticException e){
            System.out.println("输入非法数值0,无法进行计算");
        }
        System.out.println("谢谢使用");
    }
}

可以多重catch,捕获不同的异常。

如果异常类之间有继承关系,在顺序安排上需注意。越是顶层的类,越放在下面,再不然就直接把多余的catch省略掉。 也就是先捕获子类异常再捕获父类异常。

 

finally:

      有些语句,不管是否发生了异常,都必须要执行,那么就可以把这样的语句放到finally语句块中。

基本执行过程如下:

      程序首先执行可能发生异常的try语句块。如果try语句没有出现异常则执行完后跳至finally语句块执行:如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。catch语句块可以有多个,分别捕获不同类型的异常。catch语句块执行完后程序会继续执行finally语句块。finally语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。

即使try和catch块中存在return语句,finally语句也会执行。

注意: 在finally块中不能抛出异常。

JAVA异常处理机制保证无论在任何情况下先执行finally块再离开try块,因此在try块中发生异常的时候,JAVA虚拟机先转到finally块执行finally中的代码,finally执行完毕后,再向外抛出异常。如果在finally中抛出异常,try捕捉的异常就不能抛出,外部捕捉到的异常就是finally中的异常信息,而try中发生的异常信息则丢失了。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值