美文网首页
异常处理tips

异常处理tips

作者: allen716 | 来源:发表于2021-03-07 00:30 被阅读0次

1.场景描述

项目中,有遇到这种异常场景:在一个循环中,某一次出现了异常,但是希望程序捕获异常处理后,继续执行下去。

这种怎么处理呢?

2.处理方式

2.1错误方式

try-catch包裹住整个循环:

@Test
public void testException1() {
    try {
        for (int i = 0; i < 15; i++) {
            // i = 10时,制造一个算术异常
            if (i == 10) {
                int j = i / 0;
            }
            System.out.println("第" + i + "次:" + i);
        }
    } catch (ArithmeticException e) {
        logger.info("发生算术异常....");
    }
}

执行结果:

第0次:0
第1次:1
第2次:2
第3次:3
第4次:4
第5次:5
第6次:6
第7次:7
第8次:8
第9次:9
00:07:19.091 [main] INFO  cn.no7player.service.UserService - 发生算术异常....

Process finished with exit code 0

可以看到:

try-catch包裹住整个循环的话,尽管catch语句块中没有抛出异常(抛出异常会终止程序),只是打印日志,

但是程序依然会在发生异常的地方终止。

这种方式,并没有起到让程序在catch异常后继续执行的作用。

2.2正确方式

try-catch只包裹住可能出问题的代码(本例中就是 if (i=10) 这里)

    @Test
    public void testException2() {
        for (int i = 0; i < 15; i++) {
            try {
                if (i == 10) {
                    int j = i / 0;
                }
            } catch (ArithmeticException e) {
//            throw new Exception("除0异常");
                logger.info("发生算术异常....");
            }
            System.out.println("第" + i + "次:" + i);
        }
    }

运行结果:

第0次:0
第1次:1
第2次:2
第3次:3
第4次:4
第5次:5
第6次:6
第7次:7
第8次:8
第9次:9
00:22:57.602 [main] INFO  cn.no7player.service.UserService - 发生算术异常....
第10次:10
第11次:11
第12次:12
第13次:13
第14次:14

可以看到:

try-catch只包裹住循环体内可能出问题的代码的话,若该部分出现异常,catch语句块处理后,仍然可以往下继续执行try-catch后面的语句。

3.小结

处理循环中可能出现的异常时,try-catch的使用范围应该尽量小。

只用try-catch包裹住可能出异常的部分(如算术运算、日期转化等)

相关文章

  • 异常处理tips

    1.场景描述 项目中,有遇到这种异常场景:在一个循环中,某一次出现了异常,但是希望程序捕获异常处理后,继续执行下去...

  • Swift备忘

    Swift初体验 Swift Tips Swift三种不同的【异常处理方式】 Swift 3.0 private变...

  • swift开发之try.. catch的理解与使用(MD)

    摘要: swift的异常错误抛出以及其处理,使你的代码更加健壮,更加安全 tips:新手开发一枚,如有一些概念错误...

  • 同步或异步异常处理

    同步或异步异常处理 同步读取异常处理 异步读取文件异常处理

  • Java 异常

    异常处理机制 异常处理模型:终止模型:当异常发生时,就进入异常处理程序,处理结束并不返回异常发生位置继续执行;恢复...

  • 第十二章:异常处理

    异常处理语法格式: try: ...处理语句 except 异常类型: ...异常处理语句 pytho...

  • Spring MVC 全局统一异常处理(注解方式)

    全局异常处理 对异常处理类增加@ControllerAdvice 增加异常处理方法,使用@ExceptionHan...

  • 异常处理设计文档

    一、异常处理流程说明 在ESB处理过程中,若发生异常,将进入异常流程的处理。一个异常处理流程大致如下: ESB处理...

  • Java异常处理机制

    什么是异常处理机制: 异常处理机制: 让程序发生异常时,按照代码预先设定的异常处理逻辑,针对性地处理异常,让程序尽...

  • ASP .NET Core Web API_05_异常处理

    默认异常处理 自定义异常处理

网友评论

      本文标题:异常处理tips

      本文链接:https://www.haomeiwen.com/subject/whjeqltx.html