【问题标题】:What are the possible reasons why a for-each loop is not executing?for-each 循环未执行的可能原因是什么?
【发布时间】:2013-03-20 07:34:32
【问题描述】:

谁能告诉我java中的foreach循环没有执行的可能原因是什么?因为每次我调试程序时,它都没有进入我的foreach里面。

    for(SurveyReport surveyReport : surveyReportList)
    {
       System.out.println(surveyReport.getRiskRank().toString());
    }

这是我的 foreach 循环。简单但非常奇怪,因为我总是收到 InvocationTargetException。

【问题讨论】:

  • for-each循环码sn-p放在前面,不然连我们都不知道。
  • 您可能在 ) 之后和循环体开始之前放置了一个分号!或者您正在空集合/数组上尝试它。
  • @Aniket (1) JDK中没有Enumerable这样的东西。 (2) 如果b 不是Iterable 代码甚至都不会编译,更别说执行了。
  • 在此处发布您的代码。所以我们有了一个起点。
  • @BrilliantRobert,与 InvocationTargetException 关联的堆栈跟踪可能包含您问题的答案。

标签: java foreach


【解决方案1】:
  • 被迭代的集合是空的
  • 程序流程绕过了 for-each 循环(异常、条件等...)
  • 错误的 ; 会导致空的 for-each 循环体语句

【讨论】:

    【解决方案2】:

    “InvocationTargetException 是一个检查的异常,它包装了一个被调用的方法或构造函数抛出的异常。” java.lang.reflect.InvocationTargetException

    这表明代码可能正在进入循环,但如果是这样,则第一个 println 参数表达式涉及反射,并且通过反射调用的方法或构造函数会引发异常。

    它可能在进入循环之前失败,但在你检查它到达的最后一个地方之后。

    尝试捕获异常并显示它的 getCause() 以查看真正出了什么问题。

    【讨论】:

    • 当我打印消息时,异常显示“[Ljava.lang.Object; cannot be cast to com.hris.eis.entity.survey.SurveyReport”
    • 哪里抛出了异常?查看堆栈跟踪,从您识别的代码中找到最深的调用,并查看该行号发生了什么。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 2022-01-18
    • 2021-10-01
    • 2016-09-17
    • 2015-11-12
    相关资源
    最近更新 更多