Мое мнение по поводу обработки exceptions

Aug 03, 2009 21:43

Ну, извините, извините, друзья мои. Позже напишу, что нибудь более осмысленное для не интересующихся программированием.
У меня тут десятилетие попадания в Канаду намечается совсем скоро - обязательно скажу какую нибудь бестолковую, но очень торжественную речь. Опять же про программу свою рассказать хотел. Про расчлененку рассказать. Но чего-то ( Read more... )

вещаю о программировании

Leave a comment

Comments 9

cold_n_sour August 4 2009, 11:54:56 UTC
вот еще пример, когда без exceptions просто нельзя:

int updateDatabase()
{
try
{
beginTrans();
doOneThingWithOneTable();
doAnotherThingWithAnotherOne() ;
commit();
return successCode;
}
catch const SqlException& ex
{
rollbackVsyoNafig();
return ex.code();
}
}

Reply

szotin August 4 2009, 18:55:32 UTC
Это C++ ведь? Я, вообще-то про .net. Это там они борятся с ловлей неопределенного Exception ( ... )

Reply

cold_n_sour August 18 2009, 21:27:21 UTC
руки дошли проверить.
нет разницы ни в дебаге, ни в релизе - VS2005.

Reply


softmaster August 4 2009, 13:36:20 UTC
AppDomain.UnhandledException и legacyUnhandledExceptionPolicy - наше всё.

Reply

szotin August 4 2009, 18:34:54 UTC
AppDomain.UnhandledException - это, конечно, зашибись штука. Спасибо, что позволили мне записать чего-то в лог перед тем как умереть. Это позволит мне вытащить call stack и доказать, что это не я виноват, а другие плохие программисты ( ... )

Reply

softmaster August 5 2009, 21:49:09 UTC
В клиентском уе самое то - показал unhandled ошибку, отослал стектрейс девелоперам, вернулся в главное меню.

В серверном коде ессно приходится каждый чих катчать по полной программе - но fxcop наверное не для таких случаев рассчитан.

Reply


anonymous August 4 2009, 17:34:10 UTC
с одной стороны ты, старина, конечно прав. если вызываешь код, не вызывающий доверия, то собственно лучше не ожидать от него корректного выполнения. но с другой стороны, эксепшинами семантические fuckups не отловишь. возьмет плагин и обнулит нахрен memset'ом какой-нить object, и превед. ехception то прилетит, но жопа останется.

может, раз уж ты начал про обработку ошибок, изложишь позицию партии про использование asserts ? ну и мы её живенько обсудим :)

Reply

szotin August 4 2009, 18:44:08 UTC
Скажу в сторону, что никакой код не вызывает доверия. Даже мой собственный. Ты никогда не знаешь, что он выкинет при определенных стечениях обстоятельств. Мы ведь не Hello World пишем - количество влияющих параметров учету не поддается.

Я, все таки, исхожу из того, что вызываемый код сознательно вредить не будет. Так-то, конечно, всегда можно придумать что нибудт такое, чтобы программу вышибло.

Позиция партии по использованию asserts? А в чем, собственно, проблема?

Reply


szotin August 6 2009, 06:52:23 UTC
А вот еще примечательный факт. Вот список Exceptions, которые может вышвырнуть тривиальное сочетание File.OpenRead с обертками BufferedStream и BinaryReader. И последующими BinaryReader.Read.

ArgumentException
ArgumentNullException
PathTooLongException
DirectoryNotFoundException
UnauthorizedAccessException
FileNotFoundException
NotSupportedException
IOException
ObjectDisposedException

Друзья мои, а не слишком ли дофига?

Reply


Leave a comment

Up