如何确定try代码块中的哪个变量是罪魁祸首?
如何确定try代码块中的哪个变量是罪魁祸首?
在某个try块中,我有两个可能导致NumberFormatException的String变量,当我使用Integer.parseInt(string1)和Integer.parseInt(string2)时。问题是,如果我捕获异常,如何知道哪个字符串是问题的根源?我需要获得问题字符串的变量名。
下面是一些示例代码:
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();
}
}
}
而方法e.printStackTrace()并不能告诉我变量名,它只告诉我问题的内容。
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
之所以我需要知道变量名,是因为我需要提示用户发生了什么。例如,使用System.out.println(troubleMakerName + "is wrong!")告诉用户string1是错误的。
根据我的要求,用户应该输入fd=(fileName,maxLength,minLength),然后我将分析输入的字符串并创建一些响应。所以我想检查maxLength和minLength是否会抛出NumberFormatException。在这种情况下,如果minLength有问题,我需要提示用户minLength是错误的。