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
,