Как напечатать сообщение diff для того же NumberFormatException по причине diff в JAVA?

#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 или более исходных объекта