我们是否应该始终在第一行中检查java中方法的每个参数是否为空?

2022-09-01 13:06:02

每个方法都接受一组参数值。我们应该总是验证输入参数的非空性,还是允许代码以经典失败?RunTimeException

我见过很多代码,人们并没有真正检查输入参数的空性,而只是使用这些参数编写业务逻辑。最好的方法是什么?

void public( String a, Integer b, Object c)
{
  if( a == null || b == null || c == null)
  {
    throw new RunTimeException("Message...");
  }
  .....business logic.....
}

答案 1

最好的方法是仅在必要时进行检查

例如,如果你的方法是,所以你知道没有其他人在使用它,并且你知道你没有传入任何空值,那么没有必要再次检查。private

如果你的方法虽然是,谁知道你的API的用户会尝试和做什么,所以最好检查一下。public

有疑问,请检查

但是,如果您能做的最好的事情是抛出一个 ,那么可能不想检查。例如:NullPointerException

int getStringLength(String str) {
  return str.length();
}

即使您选中了 ,一个合理的选择是抛出一个 ,这无论如何都会为您服务。nullNullPointerExceptionstr.length()


答案 2

不。标准做法是假设参数不会为 null,否则将引发 NullPointerException。如果您的方法允许参数为 null,则应在 api 中声明该参数。