我有一个将 xml 字符串转换为列表数组的函数。当到达最后一个条件时,它跳转到函数的最后一个返回。
代码在 for 循环之后不执行 return 语句,并且不执行 for 循环之后的任何行。它只执行最后一个 return 语句。
函数如下所示
public List<List<String>> UpdateOrderDetailsTable(String xml) {
List<List<String>> ll = new ArrayList<List<String>>();
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));
Document doc = dBuilder.parse(is);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("ProductDetails");
Log.i("1111",Integer.toString(nList.getLength()));
if (nList.getLength() > 0) {
// get all order details
//i=1 for neglect first tag
for (int i = 1; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
List<String> l = new ArrayList<String>();
l.add(0, eElement.getElementsByTagName("OrderId").item(0).getTextContent());
l.add(1, eElement.getElementsByTagName("ProductId").item(0).getTextContent());
l.add(2, eElement.getElementsByTagName("ProductName").item(0).getTextContent());
l.add(3, eElement.getElementsByTagName("Model").item(0).getTextContent());
l.add(4, eElement.getElementsByTagName("Quantity").item(0).getTextContent());
ll.add(l);
Log.i(Integer.toString(i),eElement.getElementsByTagName("OrderId").item(0).getTextContent());
}
}
return ll;
}
Log.i("2222222222222222222","222222222222222222");
} catch (Exception e) {
Log.e("11111", e.toString());
}
return null;
}
最佳答案
从您的代码中,可以推断出 for 循环后不会执行任何语句的唯一情况是您收到一些 EXCETPION。根据您的评论,您是说您在日志中没有看到任何异常。然后我怀疑你的记录器,为了测试的目的,尝试放置一些 Sysout 语句以确保记录器是正确的。您的 log.e() 方法可能无法正常工作,只需尝试将您的 log.i() 放入异常 block 中即可查看。
关于java - try catch 内的 for 循环返回而不执行下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16455351/