2014-01-24 5 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의 값을 설정하는 것입니다 아래 코드 :이 자사의 라인에 직접 오는 ELSEIF 후

else if (customPOJO .getProtocol().equals(protocol)) 
        { 
         valueString.append(customPOJO .getPort() + ":"+ protocol + ";"); 
        } 

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

추가 작업 중에 오류가 발생하지 않고 디버그 퍼스펙티브에서 값이 valueString에 성공적으로 추가되고 있는지 확인합니다.

내가 행동의이 종류가 발생할 수

내가 대신 주석의 대답으로 이것을 넣어야

+0

jar 파일을 확인하면 코드가 일치하지 않을 수 있습니다. – Batty

+0

코드가 (실제로 실행중인) 클래스 파일과 동기화되지 않을 때 – Krease

+0

'clean-build'하고 코드를 디버그 할 때 이런 일이 발생했습니다. –

답변

0

그림을 ... 놓친 거지 무엇을 알려주십시오 때 코드 (당신이 단계별로 무엇을 디버거)가 컴파일 된 클래스 파일 (실제로 실행중인)과 동기화되지 않습니다. 디버그 정보는 줄 번호와 관련되어 있기 때문에 클래스 파일의 줄은 사용자가 보는 소스 코드와 다를 수 있습니다.

클린 빌드를 실행하고 클래스 패스에 중복 된 병이 없는지 확인하십시오.

+0

로그에도 예외가 발생합니다 –

+0

루프에서이 작업을 수행하고 있습니다. 아마도 한 번의 반복에서 elseif 내부로 이동하고 다른 루프에서 예외가 발생했을 것입니다. 이 코드를 수정할 수 있습니까? 그렇다면 예외가 발생하기 전에 내부에 디버깅 문을 추가하십시오 (if-conditions 복사 및 붙여 넣기, 아마도 루프 반복에 대한 정보 출력). 이 정보는 여기에서 무슨 일이 일어나고 있는지 파악하는 데 도움이 될 것입니다. – Krease