java - 我们是否应该总是在第一行检查java中方法的每个参数是否为null?

标签 java methods parameters null validation

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

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

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

最佳答案

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

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

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

如果有疑问,请检查

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

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

即使您检查了 null,一个合理的选择是抛出 NullPointerExceptionstr.length() 将为您做无论如何。

关于java - 我们是否应该总是在第一行检查java中方法的每个参数是否为null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5172948/

相关文章:

java - 为什么 String 方法 concat 在 for 循环中不起作用?

java - 如何在没有任何 XML 和 spring 特定注释的情况下使用 JSR 330 和 Spring 作为实现?

github - 使用 Github 目录文件动态填充 Jenkins 作业参数

javascript - JS如何获取目标变量中的变量名?

c# - RDLC,基于参数的动态图片,c#

java - 在Tomcat自带的DefaultServlet上调用ContainerRequestFilter

java - 如何通过 Eclipse Selection Service 处理来自不同提供商的选择,同时保持松散耦合?

python - 简单问题 - NoSuchElementException 和 WebDriverException 在此函数中意味着什么?

performance - 使用静态方法与实例化包含方法的类的性能

c# - 为什么C#只允许方法的最后一个参数是 "variable length"