【问题标题】:Exception Handling Adventure II异常处理冒险 II
【发布时间】:2011-08-17 11:25:04
【问题描述】:

假设我有这个 -

for() { //this is a for-each loop

 try {

  //my logic

 } catch (Exception e) {

    System.out.println("Exception caught and handled");

    //Some more logic is written..Like calling a method from another class etc..

 } //end of try-catch block

}end of for-each loop

如果处理了异常,catch 块中的逻辑会执行吗?之后,我是否能够进入 for-each 循环的下一次迭代?

【问题讨论】:

  • 是的,当然。是的,当然。
  • 考虑创建一个测试项目来检查这些简单的事情。这会让你更有信心。

标签: java exception-handling foreach try-catch


【解决方案1】:

异常处理没有打破循环。因此它将进一步迭代。
他的catch-Block中的代码将被执行。

【讨论】:

    【解决方案2】:

    首先,如果你自己尝试,你会得到更多的想法。

    但是这是我的想法--

    • 是的。如果在 try 块中抛出任何 Exception,它将在 catch 块中为 catch,并且将执行 for-each 循环的下一次迭代。
    • 但是,如果你在 catch 块中的业务逻辑抛出任何异常,你的 for 循环就会中断。 (这就是为什么将任何业务逻辑放在 catch 块中并不是一个好习惯)但是,在更安全的方面,用另一个 try-catch 块包围您的业务逻辑(在 catch 块内),即,

      for() { //this is a for-each loop
       try {
        //my logic
       } catch (Exception e) {
          System.out.println("Exception caught and handled");
              try{
              //Some more logic is written..Like calling a method from another class etc..
              } catch(Exception ex){
                  System.out.println("Exception caught inside Catch Block and handled");
              }
       } //end of try-catch block
      }end of for-each loop
      

    【讨论】:

      【解决方案3】:

      在您的 try-catch 块中,引发异常的行将是最后一行,在当前迭代中执行。在下一次迭代中,您将重新开始。

      当然,如果你遇到异常,catch 块会执行。

      【讨论】:

      • 所以我必须假设如果我把它放在循环之外,该逻辑的执行将终止。如果我错了,请纠正我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2011-01-07
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多