Je cherche à faire une erreur de vérification pour mes arguments de ligne de commande
public static void main(String[] args)
{
if(args[0] == null)
{
System.out.println("Proper Usage is: Java program filename");
System.exit(0);
}
}
Cependant, cela renvoie une exception tableau hors limites, ce qui est logique. Je cherche juste pour le bon usage.
Les arguments ne peuvent jamais être null
. Ils n'existeront tout simplement pas.
En d'autres termes, ce que vous devez faire est de vérifier la longueur de vos arguments.
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);
}
}
La réponse de @ jjnguy est correcte dans la plupart des cas. Vous ne verrez jamais un null
chaîne dans le tableau d'arguments (ou un tableau null
.) Si main
est appelé en exécutant l'application est exécutée à partir de la ligne de commande du manière normale.
Cependant, si une autre partie de l'application appelle une méthode main
, il est concevable qu'elle puisse passer un argument null
ou null
.
Cependant (2), il s'agit clairement d'un cas d'utilisation très inhabituel, et il s'agit d'une violation flagrante du contrat implicite pour la méthode main
d'entrée. Par conséquent, je ne pense pas que vous devriez vous donner la peine de vérifier les valeurs d'argument null
dans main
. Dans le cas peu probable où ils se produiraient, il serait acceptable que le code appelant reçoive un NullPointerException
. Après tout, c’est un problème chez l’appelant de violer le contrat.
Pour développer ce point:
Il est possible que la variable args elle-même soit nulle, mais pas via une exécution normale. L'exécution normale utilisera Java.exe
Comme point d'entrée à partir de la ligne de commande. Cependant, j'ai vu certains programmes qui utilisent le code C++
Compilé avec JNI pour utiliser le jvm.dll
, En contournant complètement le fichier Java.exe. Dans ce cas, il est possible de passer NULL
à la méthode principale, auquel cas les arguments seront nuls.
Je vous recommande de toujours vérifier if ((args == null) || (args.length == 0))
ou if ((args != null) && (args.length > 0))
en fonction de vos besoins.