try catch 应该放在for里还是不该放for里

简介: try catch 应该放在for里还是不该放for里

这个问题我也很疑惑,所以自己写了test来给自己解惑下

try catch在for循环外面,并且,catch 只答应日志,不抛出异常

public static void main(String[] args) {
        try {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);
                int i1 = 1;
                System.out.println(i1 / i);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("是否继续");
    }

java.lang.ArithmeticException: / by zero

0

   at com.linewell.zhzf.api.gateway.gateway.Test.main(Test.java:14)

是否继续

Process finished with exit code 0

try catch在for 循环外面就直接抛出异常,就不继续执行for循环里的业务了,继续走for循环外面的业务。

public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            try {
                System.out.println(i);
                int i1 = 1;
                System.out.println(i1 / i);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println("是否继续");
    }

0

java.lang.ArithmeticException: / by zero

1

1

   at com.linewell.zhzf.api.gateway.gateway.Test.main(Test.java:15)

2

0

3

0

4

0

5

0

6

0

7

0

8

0

9

0

是否继续

Process finished with exit code 0

如果在for 循环里的话,就继续走for循环里的其他值操作。

  public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            try {
                System.out.println(i);
                int i1 = 1;
                System.out.println(i1 / i);
            } catch (Exception e) {
                throw new RuntimeException();
            }
        }
        System.out.println("是否继续");
    }

0

Exception in thread "main" java.lang.RuntimeException

   at com.linewell.zhzf.api.gateway.gateway.Test.main(Test.java:17)

Process finished with exit code 1

这里直接throw 一个异常出去,就不继续for循环了,并且for循环外面也不执行了。

public static void main(String[] args) {
        try {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);
                int i1 = 1;
                System.out.println(i1 / i);
            }
        } catch (Exception e) {
            throw new RuntimeException();
        }
        System.out.println("是否继续");
    }

0

Exception in thread "main" java.lang.RuntimeException

   at com.linewell.zhzf.api.gateway.gateway.Test.main(Test.java:17)

Process finished with exit code 1

这里直接throw 一个异常出去,也是走一次。

结论:

如果catch里throw new RuntimeException() 那么建议直接写for循环外面。

如果catch发生后,还要继续在for里循环执行,建议写在for循环里,并且不要throw异常。

目录
相关文章
|
4月前
|
人工智能 开发者 UED
Devchat究竟好用在那些地方呢?
Devchat究竟好用在那些地方呢?
51 0
|
4月前
|
搜索推荐 大数据 数据处理
面试官:try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!
面试官:try-catch 到底写在循环里面好,还是外面好?大部分人都会答错!
55 0
|
Oracle Java 关系型数据库
try-catch必须放在循环体外吗
try-catch必须放在循环体外吗
|
Web App开发 前端开发 JavaScript
重学前端 20 # try里面放return,finally还会执行吗?
重学前端 20 # try里面放return,finally还会执行吗?
139 0
重学前端 20 # try里面放return,finally还会执行吗?
|
Oracle Java 关系型数据库
啪啪打脸!领导说:try-catch要放在循环体外!(上)
啪啪打脸!领导说:try-catch要放在循环体外!
114 0
啪啪打脸!领导说:try-catch要放在循环体外!(上)
啪啪打脸!领导说:try-catch要放在循环体外!(下)
啪啪打脸!领导说:try-catch要放在循环体外!
187 0
啪啪打脸!领导说:try-catch要放在循环体外!(下)
|
自然语言处理 C语言
梦开始的地方
一个新手梦开始的地方
明明打印到文件了,为啥tail -f看不到
文章《一分钟了解nohup和&的功效》留了一个“nohup.out为啥没有包含stdout输出”的尾巴,今天把坑填了。
1076 0
|
.NET 程序员
LINQ是死是活?——很奇怪为什么会有这样的话题?
     LINQ是死是活???      如果我问您:机器代码死了吗?汇编死了吗?C死了吗?VB6.0死了吗?Delphi死了吗?您可能会觉得我很无聊。所以我觉得“LINQ是死是活”的说法也很奇怪?      LINQ诞生之前我们要写代码,LINQ出来了我们还是写代码,LINQ死掉了(当然不是现在),我们还要写代码,除非我们不当程序员了。
679 0