Есть несколько исключений, которые были определены как "невосстановимые".Одним из них является MissingMethodException
, потому что если метод отсутствует в классе, это серьезная ошибка, требующая выгрузки класса и перезагрузки нового класса для восстановления, что невозможно сделать тривиально (если вообще).
Для восстановления необходимо переустановить, проверить версии сборок, проверить, действительны ли образы PE и т. Д.
Если все, что вы хотите знать, это то, установлен ли SP2, по умолчаниюМетод использует приложение начальной загрузки, которое просто проверяет установленную версию.Если все в порядке, оно запускает приложение, если нет, выводит приятное сообщение.
Обновление, запрошенное OP:
Другие исключения, которые трудно перехватить или не отловить(может зависеть от вашей версии .NET, т. е. в .NET 4.0 добавлено больше uncatchables): OutOfMemoryException
(может быть перехвачено, когда синхронно), StackOverflowException
(никогда не перехватывается), ThreadAbortException
(может быть перехвачено, но он особенный, потому что он будет автоматически повторно вызываться в конце блока catch), BadImageFormatException
и MissingManifestResourceException
, если вы попытаетесь перехватить его в сборке, вызвав исключение (если вы загрузите его динамически, так же, какс MissingMethodException
вы можете его поймать).И вообще, любое исключение, которое не наследуется от Exception
, трудно поймать (но вы можете поймать их с помощью общего блока try / catch).
Есть и другие, но первые три выше - этос которыми вы чаще всего сталкиваетесь на практике.