SEHException не перехвачен Try / Catch

В фоновом режиме мое приложение регулярно проверяет сетевую папку (UNC Path) на наличие обновлений приложения. Он считывает сборочную версию файла, например так:

Try
    newVers = System.Reflection.AssemblyName.GetAssemblyName("\\server\app.exe").Version
Catch ex As Exception
    ' ignore
End Try

Этот фрагмент кода выполняется довольно часто, в общем, я бы предположил, что более 100 000 раз на сайтах с несколькими клиентами пока без проблем.

Иногда,GetAssemblyName поднимаетFileNotFoundExceptionНапример, в случае, если сетевая папка недоступна (что может произойти и с этим нужно разобраться). Это исключение пойманоCatch блок чуть ниже, и все работает просто отлично.

Однако в трех зарегистрированных случаяхGetAssemblyName вызов поднялSEHException, Странно то, что это исключение не было пойманоCatch блок чуть ниже, но мой глобальный обработчик необработанных исключений (System.AppDomain.CurrentDomain.UnhandledException). В результате приложение вылетает.

Вот деталь исключения (к сожалению,ErrorCode а такжеCanResume поля исключения не регистрируются моей процедурой обработки ошибок):

Caught exception: System.Runtime.InteropServices.SEHException
   Message: External component has thrown an exception.
   Source: mscorlib
   TargetSite: System.Reflection.AssemblyName nGetFileInformation(System.String)
   StackTrace: 
      at System.Reflection.AssemblyName.nGetFileInformation(String s)
      at System.Reflection.AssemblyName.GetAssemblyName(String assemblyFile)
      at SyncThread.Run() 
      at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
      at System.Threading.ThreadHelper.ThreadStart()

Почему исключение не уловленоCatch блок чуть ниже?

(Может быть, это уместно: это происходило только на сайтах клиентов, где путь UNC указывал на сервер, который не был частью локальной сети, но был удаленным сервером в VPN).

Ответы на вопрос(1)

Ваш ответ на вопрос