Объявление переменной (например, var se
) не является исполняемым оператором, поэтому отладчик не собирается останавливаться на этой строке кода.
Вторая проблема заключается в том, что вы перебрасываете исключение во втором блоке catch. Нет абсолютно никакой причины ловить исключение и затем отбрасывать его. Если вы не собираетесь справиться с этим и просто собираетесь отбросить его, то нет смысла его ловить с самого начала.
Также помните (как упомянул Хенк), когда пошаговый код, что оптимизации могут мешать вещам. Прежде чем пытаться понять последовательность выполнения, убедитесь, что вы создали проект со всеми отключенными оптимизациями.
Кроме того, что вы видите пошаговым кодом в отладчике, почему вы думаете, что не входит в соответствующий блок catch? Я никогда не видел, чтобы код обработки исключений не работал.
Если вы действительно хотите знать, заходите ли вы в один из блоков catch, поместите в блок какой-то тип кода, который имеет видимый эффект. Например, звонок на MessageBox.Show()
. Если вы видите окно сообщения, значит, вы оказались внутри блока catch. Если нет, то нет.
Бывают случаи при отладке, когда в окнах сообщений появляются другие побочные эффекты, особенно при написании кода пользовательского интерфейса, но это не один из таких случаев.