2014-01-24 54 views
0

我已經寫了下面的代碼片段: -意外行爲流

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 + ";"); 
        } 

這個ELSEIF其直接陸續上馬後

throw new RemoteException("Invalid Argument: Unsupported protocol "+ protocol); 

沒有錯誤發生在追加操作中,並且在調試透視圖中檢查了該值正在成功追加到valueString中。

請告訴我所缺少的

+0

檢查你的jar文件,有代碼不匹配的可能性。 – Batty

+0

當你的代碼(你正在步入的)與類文件(實際上正在運行)不同步時,我已經看到了這種事情發生了 – Krease

+0

'clean-build'並調試你的代碼 –

回答

0

圖我應該把這個作爲一個答案,而不是僅僅評論...

,可能會發生這樣的行爲時,你的代碼(你在加緊通過什麼調試器)與已編譯的類文件(實際上正在運行)不同步。由於調試信息與行號相關聯,因此類文件中的行可能與您看到的源代碼中的行不同。

嘗試運行一個乾淨的構建,並確保您的類路徑中沒有可能導致此問題的重複JAR。

+0

異常也在日誌 –

+0

你正在做一個循環 - 也許它是在一個迭代的elseif內,並有另一個異常?你能修改這段代碼嗎?如果是這樣,請在引發異常之前在其中添加一些調試語句(複製並粘貼您的if-conditions,或許可以輸出關於您所在的循環迭代的信息)。這些信息可能會幫助你弄清楚這裏發生了什麼。 – Krease