Bob*_*y S 83 java command-line command-line-arguments
我希望对我的命令行参数进行一些错误检查
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: java program filename");
System.exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这会返回一个数组超出范围的异常,这是有道理的.我只是在寻找正确的用法.
jjn*_*guy 147
争论永远不会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);
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 16
在大多数情况下,@ jjnguy的答案是正确的.如果通过正常方式从命令行运行应用程序来调用,则不会null在参数数组(或null数组)中看到String main.
但是,如果应用程序的某些其他部分调用main方法,则可以想象它可能传递null参数或null参数数组.
但是(2),这显然是一个极不寻常的用例,并且它是一个严重违反了隐含合同的main入口点的方法.因此,我认为你不应该费心去检查null参数值main.万一它们确实发生,调用代码可以接受NullPointerException.毕竟,调用者违反合同是一个错误.
小智 10
为了扩展这一点:
args变量本身可能为null,但不能通过正常执行.正常执行将java.exe用作命令行的入口点.但是,我看到一些程序使用编译C++代码和JNI来使用jvm.dll,完全绕过java.exe.在这种情况下,可以传递NULL给main方法,在这种情况下args将为null.
我建议总是检查if ((args == null) || (args.length == 0)),或if ((args != null) && (args.length > 0))根据您的需要.
| 归档时间: |
|
| 查看次数: |
148499 次 |
| 最近记录: |