Используйте блоки try / catch только при необходимости. Они замедляют ваше приложение.
РЕДАКТИРОВАТЬ для Ясности:
Под «необходимым» я подразумеваю для выявления реальных ошибок.
Если вы можете написать некоторый код и быть проактивным, чтобы гарантировать, что ошибка не будет сгенерирована, сделайте это, так как она будет более производительной, чем создание исключения, а затем обработайте его.
Не используйте исключения для управления потоком программ. Я не знаю, кто это сказал первым, но я вспоминаю фразу " Исключения должны быть исключительными! ". Они должны быть в тех случаях, когда возникают непредвиденные проблемы, вещи, которые не могут быть проверены до выполнения кода и его выдачи.
Худший пример, который я часто вижу, это что-то вроде этого ...
int i = 0;
try
{
i = int.Parse(txt);
} catch {Exception x) {
// Do nothing, i = 0
}