2012-01-25 5 views
1

강력한 예외가 표시되어있는 값 목록 페이징 (PaginatedList 구현)을 사용하여 외부 페이지를 사용하여 websphere 포털에 포털 (Struts Portal Framework)에 배치 된 표시 태그를 사용하고 있습니다. java.lang.ArithmeticException: divide by zero 다음 라인 :java.lang.ArithmeticException : 표시 태그에 0으로 나눕니다.

 int pageCount = behavioursPaginatedList.getFullListSize()/Math.max(1,behavioursPaginatedList.getObjectsPerPage()); 
     if ((behavioursPaginatedList.getFullListSize() % behavioursPaginatedList.getObjectsPerPage()) > 0) 
    { 
     pageCount++; 
    } 


FullListSize = 13
ObjectPerPage = 4


,

답변

2

0으로 나누기가 발생 두 곳이 있습니다

int pageCount = behavioursPaginatedList.getFullListSize()/
    Math.max(1,behavioursPaginatedList.getObjectsPerPage()); 

이 경우는, Math.max(1, ...)이 제로가 아닌 값을 제공하기 위해 보장됩니다. 따라서 예외가 여기

if ((behavioursPaginatedList.getFullListSize() % 
     behavioursPaginatedList.getObjectsPerPage()) > 0) 

이 경우에서 오는 cam't, behavioursPaginatedList.getObjectsPerPage()는 0을 반환하는 경우, 당신은 제로 오류로 부서를 얻을 것이다.


당신 있습니다 예외를 받고 있다는 사실은 제로 입니다으로 나누기가 발생하고, behavioursPaginatedList.getObjectsPerPage()입니다 것을 제로를 반환하는 것을 말한다. 왜 그런 일이 일어나는지 알아야합니다. 답장을 보내

+0

감사 @Stephen C, 내가 그 값을 검사 할 debbuger을 사용하기 때문에 getObjectsPerPage는()는 0을 얻는 방법을 모른다는 \t FullListSize = 13 ObjectPerPage = 4 –

+0

가 추적 인쇄 또는 로거 호출을 추가하였습니다 if 문 바로 앞에있는 코드. 또한 스택 추적에서 행 번호를 확인하여 ** 예외를 던지고있는 문장을 확인하십시오. (나는 당신이 다른 객체로부터'objectsPerPage'의 값을 인쇄하고 있거나 다른 것을 인쇄하고있는 것으로 의심합니다.) * –

+0

또한 멀티에서 잘못된 동기화로 인한 메모리 이상 (예 : heisenbugs)을 조심하십시오 스레드 응용 프로그램. 이러한 버그의 특징 중 하나는 디버깅을 시도 할 때 증상이 사라지는 경향이 있다는 것입니다. –

관련 문제