我写了以下代码片段: -
public Collection<?> constructResponse (...........) throws RemoteException {
while (keyIterator.hasNext())
{
String keyValue = (String) keyIterator.next();
keyString = new StringBuilder(); // since multiple keys will be there in map need to ensure every time keyString and valueString is created
valueString = new StringBuilder();
keyString.append(keyValue + ";" + "name");
List<CustomValuePOJO> customPOJOlist = employeeValuesMap.get(keyValue );
for (CustomValuePOJO customPOJO : customPOJOlist )
{
if (protocol == null || protocol.equals(""))
{
valueString.append(rpNatPOJO.getDcnPort() + ":"+ rpNatPOJO.getProtocol() + ";");
}
else if (customPOJO .getProtocol().equals(protocol))
{
valueString.append(customPOJO .getPort() + ":"+ protocol + ";");
}
else
{ throw new RemoteException("Invalid Argument: Unsupported protocol "+ protocol);
}
}
if (valueString.length() == 0)
{
return generateErrorResponse("No info found");
}
responseMap.put(keyString.toString(), valueString.toString());
}
}
正在发生的奇怪行为是,迭代通过customPOJO进入elseIf,并通过执行以下代码设置valueString中的值:
else if (customPOJO .getProtocol().equals(protocol))
{
valueString.append(customPOJO .getPort() + ":"+ protocol + ";");
}
此后,如果它直接上线
throw new RemoteException("Invalid Argument: Unsupported protocol "+ protocol);
在追加操作中没有出现错误,并在调试透视图中检查该值是否在valueString中成功附加。
请告诉我缺少的东西
答案 0 :(得分:0)
图I我应该把它作为答案,而不仅仅是评论......
当您的代码(您在调试器中单步执行)与已编译的类文件(实际正在运行)不同步时,可能会发生这种行为。由于调试信息与行号相关联,因此类文件中的行可能与您看到的源代码中的行不同。
尝试运行干净的构建,并确保类路径上没有可能导致此问题的重复jar。