Исключение Обработка Приключения II - PullRequest
0 голосов
/ 03 мая 2011

Допустим, у меня есть это -

for() { //this is a for-each loop

 try {

  //my logic

 } catch (Exception e) {

    System.out.println("Exception caught and handled");

    //Some more logic is written..Like calling a method from another class etc..

 } //end of try-catch block

}end of for-each loop

Если обработано исключение, будет ли выполняться эта логика в блоке catch? И после этого я смогу перейти к следующей итерации цикла for-each?

Ответы [ 3 ]

2 голосов
/ 03 мая 2011

Обработка исключений не прерывает цикл. Поэтому он будет повторяться дальше.
Код в его catch-Block будет выполнен.

1 голос
/ 03 мая 2011

Прежде всего, если вы попробуете самостоятельно, вы получите больше идей.

Однако вот мои мысли -

  • Да. Если какое-либо исключение было сгенерировано внутри блока try, оно будет catch в блоке catch, и будет выполнена следующая итерация цикла for-each.
  • НО, если ваша бизнес-логика внутри блока catch генерирует какое-либо исключение, ваш цикл for прервется. (И именно поэтому не рекомендуется размещать какую-либо бизнес-логику внутри блока catch) Но, с более безопасной стороны, окружите свою бизнес-логику (которая находится внутри блока catch) другим блоком try-catch, т. Е.

    for() { //this is a for-each loop
     try {
      //my logic
     } catch (Exception e) {
        System.out.println("Exception caught and handled");
            try{
            //Some more logic is written..Like calling a method from another class etc..
            } catch(Exception ex){
                System.out.println("Exception caught inside Catch Block and handled");
            }
     } //end of try-catch block
    }end of for-each loop
    
1 голос
/ 03 мая 2011

В вашем блоке try-catch строка, выдавшая исключение, будет последней из тех, что выполняются В ТЕКУЩЕЙ Итерации. В следующей итерации вы начнете снова.

Конечно, блок catch будет выполняться, если у вас есть исключение.

...