Как правило, в .NET (хотя это не предписывается ничем, кроме соглашения), для каждой причины есть выделенный тип исключения, полученный из System.Exception
.Так, например, ваш «переполнение памяти», скорее всего, будет сигнализироваться System.OutOfMemoryException
.Изучите иерархию классов System.Exception в MSDN для получения дополнительной информации о типах исключений в .NET Framework.Хотя ваш код и сторонние компоненты всегда могут определять свои собственные.
С учетом вышесказанного, это, безусловно, проблемные случаи, как, например, с IOException
.Иногда вы почти не пытаетесь разобрать сообщения об ошибках, которые, конечно, могут быть локализованы.В большинстве случаев вы можете обойти эту проблему.
Как правило, убедитесь, что вы перехватываете только тот тип исключения, который вас действительно интересует. Кроме того, вы можете захотеть ограничить количество операторов в своей попытке.блок, чтобы (скорее) быть уверенным, что вы реагируете на исключение, вызванное правильным оператором.
Наконец, слишком грубая обработка исключений так же плоха, как и слишком точная обработка исключений.Это всегда зависит от вашего фактического кода.