[prg] Re[4]: Обработка исключения NullReferenceException
Здравствуйте, Владимир.
Вы заключаете в try catch весь цикл foreach, в моем же примере в try
catch помещаем только добавление в ListBox. В вашем случае при появлении
хотя бы одного исключения прекращается весь цикл и поэтому ListBox у вас
пустой, в моем же примере цикл будет продолжаться и ListBox будет
заполняться.
Спасибо, действительно если взять в блок только листбокс, то все
нормально. В прошлом письме я невнимательно просмотрел ваш пример.
Можете ли Вы объяснить, почему цикл останавливается, если заключить в
trycatch весь foreach?
Здравствуйте Кирилл,
try catch срабатывает лишь единожды, т.е. когда Вы заключаете в него весь
цикл, то достаточно одной ошибки, чтобы сработало try catch.
Получается, что когда в теле try { }, в котором расположен цикл целиком и в
котором отлавливается исключения, возникает данное исключение, мы выходим из
цикла и переходим к обработке исключения catch { } без возврата к циклу.
В моем же примере, Вы заключаете в тело try { } лишь ту часть кода, которая
заполняет ListBox, т.е. мы отлавливаем исключение, которое происходит при
добавлении элемента в ListBox и обработка этого исключения происходит все
еще в цикле., т.е. после обработки данного исключения в catch { } цикл
foreach продолжает свою работу.
С уважением
Владимир