Другой ответ о размещении Load () внутри блока try является правильным, но на самом деле не объясняет, почему SelectNodes () «создает» исключение XmlException, которое не перехватывается.
Фактический ответ заключается в том, что отладчик запутан / не синхронизирован с вашим исходным кодом и фактически показывает неправильную строку как причину исключения.
Это действительно должно указывать на xDoc.Load (File.FullName); , в этом случае будет ясно, что этот вызов должен быть внутри блока try.
Почему? Обратите внимание на XmlLoader.LoadNode () в последней строке трассировки стека. В .NET Reflector вы можете видеть, что метод XmlDocument.Load () (в глубине его недр) вызывает метод LoadNode ().
Однако и в отражателе видно, что метод SelectNodes () не вызывает LoadNode () нигде во внутренней реализации.
Таким образом, согласно трассировке стека, исключение не могло быть вызвано SelectNodes ().
Я видел, как отладчик так запутывался, когда было сделано изменение кода и началась отладка, но символы отладки не были обновлены правильно. Попробуйте очистить и перестроить решение, чтобы обновить символы отладки.