Ich suche nach einer Fehlerprüfung für meine Befehlszeilenargumente
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: Java program filename");
System.exit(0);
}
}
Dies gibt jedoch eine Ausnahme außerhalb des gültigen Bereichs zurück, was sinnvoll ist. Ich bin nur auf der Suche nach der richtigen Verwendung.
Die Argumente können niemals null
sein. Sie werden einfach nicht existieren.
Sie müssen also die Länge Ihrer Argumente überprüfen.
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);
}
}
@ jjnguys Antwort ist in den meisten Fällen richtig. Sie werden niemals einen null
String im Argumentarray (oder einem null
Array) sehen, wenn main
aufgerufen wird, indem die Anwendung über die Befehlszeile in der ausgeführt wird normale Art und Weise.
Wenn jedoch ein anderer Teil der Anwendung eine main
-Methode aufruft, ist es vorstellbar, dass ein null
-Argument oder ein null
-Argumentarray übergeben wird.
(2) Dies ist jedoch eindeutig ein äußerst ungewöhnlicher Anwendungsfall. nd Dies ist eine ungeheure Verletzung des implizierten Vertrages für eine main
Einstiegspunktmethode. Daher denke ich nicht, dass Sie sich die Mühe machen sollten, in null
nach main
Argumentwerten zu suchen. In dem unwahrscheinlichen Fall, dass sie auftreten, ist es akzeptabel, dass der aufrufende Code ein NullPointerException
erhält. Immerhin ist es ein Fehler im Anrufer, den Vertrag zu verletzen.
Um diesen Punkt zu erweitern:
Es ist möglich, dass die Variable args selbst null ist, jedoch nicht über die normale Ausführung. Bei der normalen Ausführung wird Java.exe
Als Einstiegspunkt von der Befehlszeile verwendet. Ich habe jedoch einige Programme gesehen, die kompilierten C++
- Code mit JNI verwenden, um den jvm.dll
Zu verwenden, wobei die Java.exe vollständig umgangen wurde. In diesem Fall ist es möglich, NULL
an die main-Methode zu übergeben. In diesem Fall ist args null.
Ich empfehle, je nach Bedarf immer if ((args == null) || (args.length == 0))
oder if ((args != null) && (args.length > 0))
zu überprüfen.