Java:检查命令行参数是否为空

新手上路,请多包涵

我正在寻找对我的命令行参数进行一些错误检查

public static void main(String[] args)
{
    if(args[0] == null)
    {
        System.out.println("Proper Usage is: java program filename");
        System.exit(0);
    }
}

但是,这会返回一个数组越界异常,这是有道理的。我只是在寻找正确的用法。

原文由 Bobby S 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 852
2 个回答

参数永远不能是 null 。他们只是不存在。

换句话说,您需要做的是检查参数的长度。

 public static void main(String[] args) {
  // Check how many arguments were passed in
  if (args.length == 0) {
    System.out.println("Proper Usage is: java program filename");
    System.exit(0);
  }
}

原文由 jjnguy 发布,翻译遵循 CC BY-SA 4.0 许可协议

@jjnguy 的回答在大多数情况下都是正确的。如果 null null main 应用程序是通过运行以正常方式行。

但是,如果应用程序的某些其他部分调用 main 方法,可以想象它可能传递 null 参数或 null argument.

但是 (2),这显然是一个非常不寻常的用例, 并且 严重违反了 main 入口点方法的隐含合同。因此,我认为您不必费心检查 null 中的参数值 main 。万一它们确实发生了,调用代码获得 NullPointerException 是可以接受的。毕竟调用者违约是bug。

原文由 Stephen C 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题