Отправляет email-рассылки с помощью сервиса Sendsay

За 2017-01-25

[prg] Re[5]: Обработка исключения NullReferenceException

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

С уважением
Владимир

   vkon@f*****.de 2017-01-25 15:22:40 (#3467305)

[prg] Re[4]: Обработка исключения NullReferenceException

Здравствуйте, Владимир.

Вы заключаете в try catch весь цикл foreach, в моем же примере в try
catch помещаем только добавление в ListBox. В вашем случае при появлении
хотя бы одного исключения прекращается весь цикл и поэтому ListBox у вас
пустой, в моем же примере цикл будет продолжаться и ListBox будет
заполняться.

Спасибо, действительно если взять в блок только листбокс, то все
нормально. В прошлом письме я невнимательно просмотрел ваш пример.
Можете ли Вы объяснить, почему цикл останавливается, если заключить в
trycatch весь foreach?

   2017-01-25 14:30:46 (#3467291)

[prg] Re[3]: Обработка исключения NullReferenceException

Здравствуйте Кирилл,
вы мое предыдущее сообщение прочли? Разницу между вашим и мои кодом увидели?
Вы заключаете в try catch весь цикл foreach, в моем же примере в try catch
помещаем только добавление в ListBox.
В вашем случае при появлении хотя бы одного исключения прекращается весь
цикл и поэтому ListBox у вас пустой, в моем же примере цикл будет
продолжаться и ListBox будет заполняться.

С Уваженмем
Владимир

   vkon@f*****.de 2017-01-25 14:04:12 (#3467280)

[prg] Re[2]: Обработка исключения NullReferenceException

Здравствуйте,

Чтобы разговор был более материальным, приведу конкретный пример.
Возьмем немного упрощенную форму изначальной задачи.

string[] z = { null,"Пушкин", null, "Диккенс", null,
"Островский", null, "Тургеньев"};
try
{
foreach (var xz in z)
{
listBox1.Items.Add(xz);
}
}
catch { }

Листбокс остается пустым, цикл спотыкается на первом null-элементе. Как
сделать так, чтобы все null отлавливались (пропускались в данном частном
случае), а в листбокс добавлялись те, которые не нулевые?

   2017-01-25 13:39:11 (#3467271)