异常处理tips

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包裹住可能出异常的部分(如算术运算、日期转化等)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天我们来讨论一下,程序中的错误处理。 在任何一个稳定的程序中,都会有大量的代码在处理错误,有一些业务错误,我们可...
    Java耕耘者阅读 4,624评论 0 4
  • 这篇文章主要是对Java异常选择和使用中的一些误区的总结和归纳,希望各位读者能够熟练掌握异常处理的一些注意点和原则...
    唐老鸭z阅读 3,068评论 0 0
  • 在写代码的过程中,我们往往会忽略一些异常处理的基础知识。本文将着重介绍 Java 异常选择和使用中的一些误区,希望...
    小宇java阅读 3,424评论 0 4
  • 1.什么是Java异常? 今天我们来聊聊java异常,异常时导致程序中断执行的一种指令流。我们在提高代码稳定...
    悟成阅读 4,476评论 0 50
  • 本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结...
    L千年老妖阅读 1,215评论 0 1