В определенном блоке try у меня есть две переменные String
, которые могут вызвать NumberFormatException
, когда я пользователь Integer.parseInt(string1)
и Integer.parseInt(string2)
. Вопрос: если я catch
исключение, как узнать, какая строка является нарушителем спокойствия? Мне нужно получить имя переменной нарушителя.
Вот пример кода:
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: для строки ввода: "fdsa" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) в java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) в test.main(test.java:9) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:498) в com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Процесс завершен кодом выхода 0
Причиной того, что мне нужно знать имя переменной, является то, что мне нужно указать пользователю, что происходит. Например, сообщите пользователю, что строка1 неверна, используя
System.out.println(troubleMakerName + "is wrong!")
В моих Требованиях пользователь должен ввести
fd=(fileName,maxLength,minLength)
тогда я проанализирую входную строку и создаю некоторые ответы. Поэтому я хотел бы проверить, будут ли maxLength
и minLength
бросать NumberFormatException
. В этом случае, если minLength
что-то не так, тогда мне нужно запросить у пользователя, что minLength ошибочна.