2012-01-25 18 views
1

我在websphere portal中部署的門戶(Struts Portal Framework)中使用顯示標籤,使用外部分頁使用值列表分頁(實現PaginatedList)出現了強大的異常 java.lang.ArithmeticException: divide by zero 在下列行:java.lang.ArithmeticException:在顯示標籤中除零

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


FullListSize = 13
ObjectPerPage = 4


回答

2

有兩個地方出現零可能鴻溝:

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

在這種情況下,Math.max(1, ...)是保證提供的值不爲零。所以異常cam't從這裏

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

在這種情況下現身,如果behavioursPaginatedList.getObjectsPerPage()返回零,那麼你會被零誤差得到了分工。


越來越異常的事實說,通過零分裂發生,那behavioursPaginatedList.getObjectsPerPage()返回零。你需要找出原因。

+0

感謝@Stephen下您的回覆,我不知道怎麼getObjectsPerPage()獲得零,因爲我用debbuger視察其價值有\t FullListSize = 13 ObjectPerPage = 4 –

+0

添加一絲打印或記錄呼叫您在if語句之前的代碼。同時檢查堆棧跟蹤中的行號以確保**您知道哪個語句拋出異常。 (我懷疑是要從另一個對象中打印出'objectsPerPage'的值,或者是在你打印它之後正在改變它*) –

+0

另外,要小心由多次錯誤同步引起的內存異常(即heisenbugs)螺紋應用程序。此類錯誤的一個特點是,當您嘗試調試它們時,症狀消失會消失。 –