Согласно Intellitrace, только при первой сериализации XML-типа тип FileNotFoundException генерируется, а затем перехватывается. Это означает, что CLR ожидает загрузки сборки, содержащей все XML-сериализаторы для этой конкретной сборки, и, когда она не найдена, выдается исключение FileNotFoundException, которое сигнализирует XmlSerializer: «Эй! Генерация чертовой сборки!» и это то, что происходит во время этого «Поймать», а затем существует ранее не найденный файл.
Я где-то читал, что использование try-catch для логики - плохое упражнение. ИДК, почему Microsoft использовала этот подход ...