Может казаться, не обрабатывает XMLException?

Это должно работать также:

DELETE FROM [table] INNER JOIN (SELECT [id] FROM (SELECT [id] FROM [table] ORDER BY [id] DESC LIMIT N) AS Temp) AS Temp2 ON [table].[id] = [Temp2].[id]
5
задан Sk93 10 September 2009 в 10:14
поделиться

2 ответа

Это потому, что вы не написали

xDoc.Load(File.FullName);

внутри блока try. Это причина, по которой исключение не было обработано.

5
ответ дан 14 December 2019 в 08:55
поделиться

Другой ответ о помещении Load () в блок try верен, но фактически не объясняет почему SelectNodes () «кажется» выбрасывает исключение XmlException, которое не перехватывается.

Фактический ответ заключается в том, что отладчик запутался / не синхронизирован с вашим исходным кодом и фактически показывает неправильную строку как вызывающую исключение.

Он действительно должен указывать на xDoc.Load (File.FullName); , и в этом случае будет ясно, что этот вызов должен находиться внутри блока try.

Почему? Обратите внимание на XmlLoader.LoadNode () в последней строке трассировки стека. В .NET Reflector вы можете видеть, что метод XmlDocument.Load () (глубоко в его недрах) вызывает метод LoadNode ().

Однако и в отражателе видно, что метод SelectNodes () не вызывает LoadNode () в любом месте его внутренней реализации.

Таким образом, согласно трассировке стека, исключение не могло быть вызвано SelectNodes ().

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

2
ответ дан 14 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: