Ну, извините, извините, друзья мои. Позже напишу, что нибудь более осмысленное для не интересующихся программированием.
У меня тут десятилетие попадания в Канаду намечается совсем скоро - обязательно скажу какую нибудь бестолковую, но очень торжественную речь. Опять же про программу свою рассказать хотел. Про расчлененку рассказать. Но чего-то заработался совсем - некогда писанину писать. А жаль.
Тем не менее. Устоявшиеся мнения про обработку exceptions меня возмутили. Я с ними не согласен. Ни с Энгельсом, ни с Каутским. Впрочем, те кому exceptions, как мне балет - свободны. До новых встреч в эфире.
Выругался мне FxCop на то, что часто Exception ловлю. Хотел я просто отключить правило, но решил сначала Интернет почитать. Узнать, что народ думает. Ба, друзья мои. Весь Интернет наполнен высказываниями: NEVER, NEVER, NEVER catch(Exception). Вот именно так - религиозно огромными буквами на весь экран. Причем, это, типа, такое общее место, что всем ясно, что только чайники могут ловить Exception.
А мудрые программисты, если вызвали чужой код и он у них попользовал null, должны мудро дать своему приложению свалиться с unhandled exception. Потому что это не их вина, а библиотека виновата. И пусть пользователь к библиотеке претензии предъявляет.
Или вот скажем, пишу я pluginable систему. И у меня есть базовый класс:
class Plugin
{
virtual void DoSomething();
}
И вот я вызываю:
try
{
DoSomething();
}
catch(GoodException ge)
{
// Очень хорошо, потому что те, кто пишут плагины всегда швыряют только GoodException
}
catch(Exception ex)
{
// Лох ты, Старина. Кошерные программисты никогда не ловят Exception. А если писатель плагинов не швырнул
// GoodException то пусть мир взорвется и разнесет вдребезги дурные головы пользователей. Потому что нам
// все пофиг. Вина не наша и с нас взятки гладки. Мы белые и пушистые, а виноваты всякие другие, которые
// плохие программисты. А мы очень хорошие и Exception ловить не будем.
}
В общем, друзья мои, теоретики программирования, во главе с FxCop-ом бредят, на мой скромный взгляд. Я вам еще могу примеров привести, когда вылавливание абсолютно всех exceptions жизненно необходимо.
Так что, я выключаю правило. Вопрос закрыт - теоретики идут нафиг.