【问题标题】:How to continue loop iterations if an exception occurs?如果发生异常,如何继续循环迭代?
【发布时间】:2018-12-30 07:24:46
【问题描述】:

嘿,我已经完全完成了我的 try-catch 块,但有疑问。 我想计算一个字符串包含多少个单词和数字。 为此,我想使用 try - catch 块。我将 String 解析为 int,如果输出为 false,我想计算 catch 块逻辑中的字数。但是程序进入catch块后,程序就退出了。我想在捕获的错误之后继续遍历循环。我怎样才能做到这一点?

    Scanner odczyt = new Scanner(System.in);
    String zdanie = odczyt.nextLine();
    String[] podzdania = zdanie.split(" ");
    boolean exception = false;
    int numberword = 0;

    try {

        for (int i = 0; i < podzdania.length; i++) {
            Integer.parseInt(podzdania[i]);
        }

    } catch (NumberFormatException e) {

        numberword++;

    }

【问题讨论】:

    标签: java loops try-catch


    【解决方案1】:

    在循环内移动 try-catch 块:

    for (int i = 0; i < podzdania.length; i++) {
      try {
        Integer.parseInt(podzdania[i]);
      } catch (NumberFormatException e) {
        numberword++;
      }
    }
    

    不过,我会避免使用异常作为流控制机制。在实际解析之前检查this StackOverflow question 以获取验证字符串的替代方法。

    【讨论】:

    • 我可以赶上这个更好的:)
    • @davidxxx haha​​ 我几乎很难过,像这样一个微不足道的答案让我快速获得 5 次投票
    • 你不应该 :) 这可能是一个基本的问题,但你的答案很明确,最后的高级建议使答案更好。
    • @davidxxx 但这违背了 Stack Overflow 的理念,即成为一个高质量的问答存储库。在许多帖子中隔离相关内容会导致帖子膨胀并使内容更难找到。但是,堆栈溢出是一个损坏的系统,因此为什么这些操作被忽略 when mentioned。如果人们因发现重复内容和配对相关内容而获得奖励,Pedro 就不必诉诸于此。
    • @VinceEmigh “隔离”不是正确的词。信息没有被分开。 “分发”、“分散”或者,嗯,“复制”对于我认为你想说的话来说是合适的词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多