Dans un certain bloc d'essai, j'ai deux String
variables qui pourraient causer NumberFormatException
lorsque j'utilise Integer.parseInt(string1)
et Integer.parseInt(string2)
. La question est, si je catch
une exception, comment savoir quelle chaîne est le fauteur de troubles ? J'ai besoin d'obtenir le nom de la variable du fauteur de troubles.
Voici un exemple de code :
public class test {
public static void main(String[] args) {
try {
String string1 = "fdsa";
String string2 = "fbbbb";
Integer.parseInt(string1);
Integer.parseInt(string2);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
Et la méthode e.printStackTrace()
ne me dit pas le nom de la variable ; il me dit juste le contenu du trouble-fête.
java.lang.NumberFormatException : Pour la chaîne d'entrée : "fdsa" à java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at test.main(test.java:9) at sun.reflect.NativeMethodAccessorImpl.invoke0(Méthode native) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) à l'adresse sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Le processus s'est terminé avec le code de sortie 0
La raison pour laquelle je dois connaître le nom de la variable est que je dois demander à l'utilisateur ce qui se passe. Par exemple, dire à l'utilisateur que la chaîne de caractères 1 est fausse en utilisant
System.out.println(troubleMakerName + "is wrong!")
Dans mes exigences, l'utilisateur doit saisir
fd=(fileName,maxLength,minLength)
puis je vais analyser la chaîne d'entrée et créer des réponses. J'aimerais donc vérifier si le maxLength
y minLength
jettera NumberFormatException
. Dans ce cas, si minLength
a quelque chose d'erroné, alors je dois avertir l'utilisateur que la longueur minimale est incorrecte.