непредвиденное исключение java.math.BigDecimal, работающее в IBM WebSphere - PullRequest
4 голосов
/ 07 февраля 2011

Запуск приложения Java в IBM WebSphere вызвал такое исключение:

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 и также не вызывает его.Возможно, это специфично для JDK IBM.

Будем благодарны за любые комментарии.

Предоставление кода, относящегося к исключению

    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.

Ответы [ 3 ]

1 голос
/ 12 февраля 2011

Исправлено:

На самом деле все это выражение находится внутри цикла, который, как мне показалось, излишне упоминать. Я переместил объявление BigDecimal yearPremiumAmt перед циклом и реорганизовал код:

BigDecimal annualPremiumAmt;
for(...) { 

    if (nwtPremium) {
        annualPremiumAmt = nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO;
        policyFormTotal = policyFormTotal.add(annualPremiumAmt);
        formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt));
    }
}
1 голос
/ 09 февраля 2011

Я бы отправил ваши вопросы в службу поддержки программ IBM.Они не взимают плату за экземпляр, это неограниченное количество запросов, если у вас есть соглашение о поддержке.

0 голосов
/ 09 февраля 2011

policyFormTotal НЕДЕЙСТВИТЕЛЕН?Как насчет результата formList.getFormPremiumAmt ()?Вы никогда не проверяете их в этом блоке кода.

...