Где ловить исключения, когда внутри цикла? - PullRequest
5 голосов
/ 11 августа 2010

HI, Мне было интересно, что вы думаете об обработке исключений, т.е. у меня есть метод:

public void Method{}
{
   for (int i=0;i < length )
   {
    // dosomething that may case exception
    ...
    ...
    // rest of the code
   }
}

Должен ли я добавить блок try catch для обработки исключений для всего цикла или просто наиболее уязвимого кода или что-то еще? Какая лучшая практика?

Ответы [ 6 ]

9 голосов
/ 11 августа 2010

Ответ на каком уровне вы хотите / можете справиться с этим. Если обработка одного элемента может быть неудачной, но вы можете продолжить обработку, используйте try catch в цикле. если может произойти ошибка, и вы не можете продолжить, используйте external try catch.

2 голосов
/ 11 августа 2010

Это зависит от того, как вы хотите, чтобы ваш код выполнялся .

Например, должен ли цикл продолжать выполняться, даже если один элемент вызывает исключение?Если так, то вы хотите попробовать / поймать внутри для.Если нет, то вы хотите попробовать / поймать во всем.

1 голос
/ 11 августа 2010

Это зависит.

Хотите ли вы продолжить обработку элементов, если вы нажали исключение на каком-либо отдельном элементе? Затем обработайте исключение внутри цикла.

Хотите ли вы, чтобы обработка цикла прекратилась, если произошло исключение? Затем обработайте исключение вне цикла.

0 голосов
/ 11 августа 2010

Чем меньше строк вы считаете проблематичными, тем лучше. Затем вы должны поместить их в блок try catch.

0 голосов
/ 11 августа 2010

Это зависит от того, что вы делаете

, если вы планируете продолжить итерацию, когда возникает какое-то исключение, естественно, вы помещаете блок try catch в for.

, если вы хотите остановить операцию при возникновении какой-либо ошибки, лучше поставить в блок try catch.

for (int i = 0; i < 10000000; i++) {
        try {

        }catch (Exception e) {

        }
    }

Продолжительность 16 мс.

   try {
        for (int i = 0; i < 10000000; i++) {

        }
    }catch (Exception e) {

    }

Продолжительность 0 мс.

0 голосов
/ 11 августа 2010

Я предпочитаю, чтобы обработка исключений была максимально приближена к коду, который генерирует исключение, насколько это возможно. Это дает вам лучший след стека. Я бы положил это внутрь цикла. YMMV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...