コマンドライン引数のエラーチェックを行いたい
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: Java program filename");
System.exit(0);
}
}
ただし、これは境界外の配列の例外を返します。これは理にかなっています。適切な使用法を探しています。
引数を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の答えは、ほとんどの状況で正しいです。アプリケーションを実行してnull
を呼び出す場合、引数配列にnull
文字列(またはmain
配列)が表示されることはありません。通常の方法でコマンドラインから実行します。
ただし、アプリケーションの他の部分がmain
メソッドを呼び出す場合、null
引数またはnull
引数配列を渡すことが考えられます。
ただし、(2)、これは明らかに非常に珍しいユースケースです。andこれは、main
エントリポイントメソッドの暗黙の契約に対する重大な違反です。したがって、null
のmain
引数値を確認する必要はないと思います。万が一それらが発生した場合、呼び出しコードがNullPointerException
を取得することは許容されます。結局、契約に違反することは呼び出し側のバグです。
この点を拡張するには:
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))
を常に確認することをお勧めします。