2012-01-25 3 views
1

私は、値リスト・ページング(PaginatedListの実装)を使用してwebsphereポータルにデプロイされたポータル(Struts Portal Framework)に表示タグを使用しています。次の行で :java.lang.ArithmeticException:displaytagでゼロで割る

 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, ...)は、非ゼロ値を提供することが保証されています。だから、例外がここに

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

この場合から来ることcam't、behavioursPaginatedList.getObjectsPerPage()リターンがゼロならば、あなたは、ゼロによる除算エラーを取得します。


あなたが例外を取得しているという事実は、ゼロによる除算がが発生し、behavioursPaginatedList.getObjectsPerPage()はゼロを返すであるとされていることを述べています。あなたはそれがなぜ起こっているのかを知る必要があります。

+0

おかげ@Stephen Cお返事のため、私はどのようにgetObjectsPerPage(知らない)ゼロを取得し、私はその値を検査するdebbugerを使用するので、それは\t FullListSize = 13 ObjectPerPage = 4 –

+0

はあなたに、トレースプリントやロガーの呼び出しを追加しました'if'ステートメントの直前のコード。また、スタックトレースの行番号をチェックして**例外がスローされているステートメントを確認してください。 (私は、あなたが別のオブジェクトから 'objectsPerPage'の値を印刷しているか、何かが*印刷した後にそれを変更していると思われます)。 –

+0

また、マルチで誤った同期によって引き起こされたメモリの異常(例:heisenbugs)スレッドアプリケーション。このようなバグの特徴の1つは、デバッグしようとすると症状が消える傾向があることです。 –

関連する問題