In a certain try block, I have two String
variables which could cause NumberFormatException
when I user Integer.parseInt(string1)
andInteger.parseInt(string2)
. The question is, if I catch
an exception, how to know which string is the troublemaker? I need to get the troublemaker's variable name.
Here is some example 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();
}
}
}
And the method e.printStackTrace()
doesn't tell me the variable name; it just tells me the content of the troublemaker.
java.lang.NumberFormatException: For input string: "fdsa" at
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(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
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)
Process finished with exit code 0
The reason that I need to know the variable's name is that I need to prompt the user what's going on. For instance, tell the user that string1 is wrong by using
System.out.println(troubleMakerName + "is wrong!")
In my Requirements, the user should input
fd=(fileName,maxLength,minLength)
then I will analyse the input string and create some responses. So I'd like to check whether the maxLength
and minLength
will throw NumberFormatException
. In this case, if minLength
has something wrong, then I need to prompt the user that the minLength is wrong.
question from:
https://stackoverflow.com/questions/38630111/how-to-know-which-variable-is-the-culprit-in-try-block 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…