#java #exception
#java #исключение
Вопрос:
Как напечатать сообщение diff для того же NumberFormatException по причине diff в JAVA?
try {
int a=Integer.parseInt(aStr);
int b= Integer.parseInt(bStr);
}catch (NumberFormatException ex) {
if ex's cause is from int a;//ex.getCause()=a?
System.out.println("a is not a integer");
if ex's cause is from int b
System.out.println("b is not a integer");
}
Ответ №1:
try {
final int a = Integer.parseInt(aStr);
} catch (final NumberFormatException ex) {
System.out.println("a is not a integer");
}
try {
final int b = Integer.parseInt(bStr);
} catch (final Exception e) {
System.out.println("b is not a integer");
}
Ответ №2:
Вы можете объявить переменные в двух разных try catch…
try {
int a=Integer.parseInt(aStr);
}catch (NumberFormatException ex) {
System.out.println("a is not a integer");
}
try{
int b= Integer.parseInt(bStr);
}catch (NumberFormatException ex) {
System.out.println("b is not a integer");
}
Вместо этого вы можете оставить блок try без изменений и в блоке catch распечатать трассировку стека, выполнив это
ex.printStackTrace();
Это даст вам номер строки, где произошло исключение, который будет либо в переменной a, либо в
Ответ №3:
ну, это обеспечивает приятное сообщение, тем не менее, если вы хотите, у вас может быть два блока catch
Комментарии:
1. Это невозможно, поскольку одно и то же исключение не может быть перехвачено дважды для одного и того же блока try… для этого вам нужно создать два разных блока try….
Ответ №4:
Другая возможность.
Введите строковую переменную перед блоком try:
String msg = "a is not an integer";
try {
// parse a
msg = "b is not an integer";
// parse b
} catch (...) { println(msg); }
Ответ №5:
Единственной альтернативой двум блокам try catch было бы установить маркер
boolean aSet = false;
try{
int a = Integer.parseInt(aStr);
aSet = true;
int b = Integer.parseInt(bStr);
} catch (NumberFormatException ex) {
if (aset) {....
Комментарии:
1. что, если у меня есть 3 или более исходных объекта