@ Илья:
Вероятно, это одна из худших статей, когда-либо написанных Джоэлом (для тех, кто не читал ссылку, он утверждает, что "исключения считаются вредными", поэтому не используйте их).
У Джоэла две проблемы с исключениями:
Они невидимы в исходном коде.
- Но так же и необработанные возвраты статуса. А правильно обработанные возвраты состояния загромождают обычный поток методов, делая их намного труднее для чтения.
Они создают слишком много возможных точек выхода для функции.
- И что с того? Обработка неудачи почти всегда потребует вашего возвращения рано. Явное указание точек выхода служит только для загромождения кода.
У Неда Батчелдера отличный (и гораздо более длинный) ответ Джоэлю здесь . У Джоэла короткий ответ здесь , на что Нед снова отвечает здесь .
У Брэда Абрамса также есть очень хорошая статья о значении исключений здесь .