如何确定try代码块中的哪个变量是罪魁祸首?

14 浏览
0 Comments

如何确定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是错误的。

0