Java 如何解决数组索引OutOfBoundsException

Java 如何解决数组索引OutOfBoundsException,java,arrays,indexoutofboundsexception,Java,Arrays,Indexoutofboundsexception,我有下面的代码。当我执行它时,我得到以下错误。我在另一个步骤中运行相同的代码,它工作正常,但在当前步骤中失败 java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: 17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ def dbData = queryResults; def mailTable = "<

我有下面的代码。当我执行它时,我得到以下错误。我在另一个步骤中运行相同的代码,它工作正常,但在当前步骤中失败

java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: 17

++++++++++++++++++++++++++++++++++++++++++++++++++++++++

def dbData = queryResults;


def mailTable = "<table style='border: 1px solid #ccc;border-collapse: collapse;'>";
def size = 17;

mailTable += "<tr style='border-top: 3px solid #ccc;'><b><u><td style='padding: 10px;bgcolor=#4169E1;'>SKU</td><td style='padding: 10px;bgcolor=#4169E1;'>Currency</td><td style='padding:10px;bgcolor=#4169E1;'>Source</td><td style='padding: 10px;bgcolor=#4169E1;'>Pricing Sort</td><td style='padding: 10px;bgcolor=#4169E1;'>Role</td><td style='padding: 10px;bgcolor=#4169E1;'>Product Manager</td><td style='padding: 10px;bgcolor=#4169E1;'>Price</td><td style='padding: 10px;bgcolor=#4169E1;'>Layout</td><td style='padding: 10px;bgcolor=#4169E1;'>Description</td><td style='padding: 10px;bgcolor=#4169E1;'>Reference</td><td style='padding: 10px;bgcolor=#4169E1;'>Global</td><td style='padding: 10px;bgcolor=#4169E1;'>Status</td><td style='padding: 10px;bgcolor=#4169E1;'>Material</td><td style='padding: 10px;bgcolor=#4169E1;'>Business</td><td style='padding: 10px;bgcolor=#4169E1;'>SB</td><td style='padding: 10px;bgcolor=#4169E1;'>Group</td><td style='padding: 10px;bgcolor=#4169E1;'>GPH Code</td></u></b></tr>"


/**
 * filling the html table with opportunity info
 * */
def index;
dbData.each {row ->

    mailTable += "<tr style='border-top: 3px solid #ccc;'>";

    for (index = 0; index < size; ++index) {
        mailTable += "<td style='padding: 10px;'>" + row.getAt(index) + "</td>";
    }

    mailTable += "</tr>";

}
mailTable += "</table>";

您正在从BoundsException获取数组索引,因为您正在尝试访问空数组中的元素,很可能是0个元素。我建议您在尝试从数组中获取元素之前检查数组是否为空。 我不太确定是哪个数组在代码中抛出错误,因为我不知道数据库调用的作用。但我猜不是dbData就是mailTable

试着这样做:

if (dbData.length != 0) {
  //run your code here that access the elements
} else { //do nothing..or whatever you want to happen when it's empty, maybe 
error? }

老实说,我对def一无所知。它是某种lisp方法吗?所以可能是java不理解索引值,因为它不是一个常见的int-index java变量。我可能错了,我不知道def方法。如果我完全错了,我很抱歉


干杯

注意++索引。我会使用索引++