FindBugs Null передан для ненулевого параметра нового java.math.BigInteger

В приведенном ниже фрагменте почему FindBugs жалуются на null передается BigInteger конструктор? Это говорит, что это известно null на линии: signature=null;

byte[] signature;
Calendar today = new GregorianCalendar(
                        now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DATE),
                        now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
Date d=today.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String timestamp =sdf.format(d).toString();
String pp=user.userName+secretKeyStr+timestamp;
try {
    signature = Security.getMD5Hash(pp);
} catch (Exception e) {
    e.printStackTrace();
    signature=null;
}
//convert byte[] into String. method to generate MD5 hash of a string in Java
BigInteger bigInt = new BigInteger(1,signature); 

Это ложный положительный или я что-то здесь упускаю? я должен вернуться null на Exception?

1 ответ

Решение

Известно, что signature может быть нулевым в new BigInteger(1,signature); линия. Это, вероятно, ошибка, потому что конструктор BigInteger бросит NullPointerException если один из параметров является нулевым.

Вы должны обработать ваше исключение другим способом, например, вернув null (как вы говорите). На мой взгляд, вы должны также поймать более конкретное исключение, чем Exception,

Другие вопросы по тегам