4

IBM WebSphere で Java アプリケーションを実行すると、次のような例外が発生しました。

Caused by: java.lang.NullPointerException
at java.math.BigDecimal.add2DFP(BigDecimal.java:1946)
at java.math.BigDecimal.add(BigDecimal.java:1881)
at com.somepackage.components.view.PremiumSummaryViewModel.setPremiums(PremiumSummaryViewModel.java:101)

ヌルチェックが行われます。私が確認したように、java.math.BigDecimalクラスにはそのようなメソッドadd2DFPがなく、いずれも呼び出しません。多分それはIBMのJDKに固有のものです。

これに関するコメントをいただければ幸いです。

例外に関するコードの提供

    BigDecimal annualPremiumAmt = nwtPremium != null && nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO;
    if (nwtPremium != null) {
        BigDecimal formPremiumAmt = nwtPremium.getAnnualAmt();
        if (formPremiumAmt != null) {
            policyFormTotal = policyFormTotal.add(annualPremiumAmt); //Bigdecimal
            formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt)); //101 line
        }
    }

インスタンスは IBM JDK 1.6 で実行されています。

4

3 に答える 3

1

問題をIBMソフトウェア・サポートに提出します。インスタンスごとに課金されることはありません。サポート契約を結んでいる限り、リクエストの数に制限はありません。

于 2011-02-09T18:26:00.303 に答える
1

修理済み:

実は、この式全体は、言及する必要がないと思っていたループ内にあります。ループの前にBigDecimal annualPremiumAmtの宣言を移動し、コードを再編成しました。

BigDecimal annualPremiumAmt;
for(...) { 

    if (nwtPremium) {
        annualPremiumAmt = nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO;
        policyFormTotal = policyFormTotal.add(annualPremiumAmt);
        formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt));
    }
}
于 2011-02-12T14:05:27.467 に答える
0

policyFormTotalはNULLですか?formList.getFormPremiumAmt()の結果はどうですか?このコードブロックでそれらをチェックすることはありません。

于 2011-02-09T18:32:03.363 に答える