异常的简单使用

对于异常我们可以使用try…catch进行捕获,但是对于捕获的异常在catch中进行throw new ..Exception进行抛出给调用层,

捕捉异常是捕捉给开发人员,方便与调试bug,而最终我们返回给用户的Controller层要对可能出现的异常进行处理并且返回信息给用户;

作用:

1、捕获可能出现的异常,抛出定义的异常触发事务进行回滚

2、调用层检测到异常后,对异常加以处理成提示信息返回给用户,提升体验

3、捕捉可能出现的异常方便开发进行调试,以及对异常进行处理

例如:

一、不进行捕获异常

for (int i=1;i<=5;i++){

    if(i == 3){

        System.out.println(1/0);

    }

    System.out.println(i);

}

结果:

 

程序因为异常一直向上抛出至JVM直至终止,for循环并没有继续执行

二、for循环捕获异常(try...catch包裹在最外层)

try {

    for (int i=1;i<=5;i++){

        if(i == 3){

            System.out.println(1/0);

        }

        System.out.println(i);

    }

} catch (Exception e) {

    e.printStackTrace();

}

结果:

 

将try定义在for循环的外层,这个时候,程序因为异常终止,而且for循环并没有继续执行

三、将异常定义在for循环内层,不进行抛出

for (int i=1;i<=5;i++){

    if(i == 3){

        try {

            System.out.println(1/0);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    System.out.println(i);

}

结果:

 

异常在for循环内被捕获并且未被抛出,故没有导致程序终止,继续执行完成了for循环

四、将异常定义在for循环的内层,并且手动抛出新的异常

public class TestException {

    public static void main(String[] args) {

        try {

            test();

        } catch (Exception e) {

            e.printStackTrace();

        }

 

    }

    public static void test() throws Exception{

        for (int i=1;i<=5;i++){

            if(i == 3){

                try {

                    System.out.println(1/0);

                } catch (ArithmeticException e) {

                    e.printStackTrace();

                    throw new Exception("自定义异常");

                }

            }

            System.out.println(i);

        }

    }

}

结果:

 

向上抛出了异常直到最上层,导致程序终止

综上初步得出结论:

1、代码块若捕捉异常未向上抛出时,捕捉异常try catch后续的代码块依旧会执行
2、代码块若未捕捉异常或者捕捉之后抛出,则会向外层抛出异常,若一直未处理则导致程序终止

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值