新 java.math.BigInteger 的非空参数传递了 FindBugs Null

FindBugs Null passed for non-null parameter of new 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); 

这是误报吗,我是不是漏掉了什么? 我应该在 Exception 上 return null 吗?

已知 signature 可以 new BigInteger(1,signature); 行为空。这可能是一个错误,因为如果其中一个参数为空,BigInteger 的构造函数将抛出 NullPointerException

您应该以其他方式处理异常,例如返回 null(如您所说)。在我看来,您还应该捕获比 Exception.

更具体的异常