Re[10]: книги и литература по Exception
От: zelenyi_slon  
Дата: 10.02.11 19:33
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


S>>>Это бесполезно — вы никак не используете выученные фонемы и они тут же забываются, сам так тратил время. В первую очередь надо набирать словарный запас и регулярно его использовать — т.е. побольше читать на английском


А>>ну как его можно регулярно использовать, если вокруг тебя не англоязычные...

S>Элеменарно Чтение книг/блогов/форумов, поиск решений и общение на англоязычных сайтах.

так слово когда его видишь и когда его произносят запоминается намного лучше и то всё позабывал. А доку вольно/невольно приходится читать на англ и всё-равно в целом не могу проникнуться.

А>>что значит пометить как failsafe? как это делается?

S>Да посто в комментариях — чтобы следующий кодер не поломал чего. Или используйте ReliabilityContractAttribute, только неплохо предварительно почитать — куда оно и зачем.

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

А>>если я оберну в try/catch DoWork — то что случится? inEdit как была тру в случае вылета эксепшена, так и установится в тру. EndEdit не выполнится.

S>Угумс. А теперь представьте, что 99% вашего кода так или иначе дёргает BeginEdit и отлавливает исключения. Приложение не падает, но сделать вы ничего не сможете. Или гораздо худший сценарий: BeginEdit вызывается очень редко и часть кода не отлавливает исключения. Как результат, приложение будет падать нечасто, но ВНЕЗАПНО. И ни по стеку вызовов, ни дампу вы не узнаете настоящую причину падения — проблема возникла давным-давно.

ну у Вас и пример Конечно в таком случае геморра больше чем можно себе представить. Я о ситуациях например запись в реестр о том что версия триальна. Я согласен на то, что мой софт кто-то будет использовать не купив. Это лучше, чем если прога у людей будет валиться. Итого примерно след код:

bool trialVersion = true;
try
{
if (!trialVersion)
WriteTrialKeyToRegisty(); // здесь ТОЛЬКО запись текущей даты в реестр в using'е...
}
catch(Exception ex)
{
Log(ex);
trialVersion = false
}

в таком случае никаких подводных камней?


А>>Я понимаю, что нужно следить чтобы значения переменных до вызова и после были идентичными. В таком случае, как я понимаю, подводных камней не предвещается


S>Не только значения полей. События, внешние ресурсы (например, файлы или ключи реестра), блокировки — всё что так или иначе влияет на логику вашего (или чужого) приложения не должно находиться в рассогласованном состоянии.


а что события? Имеете ввиду подписка на события? Про файлы и ключи реестра понятное дело, конструкция using желательна почти в любом случае.

S>А то некоторые попользуются таким "надёжным" ПО и начинают предъявлять претензии
Автор: McSeem2
Дата: 30.11.10
к дотнету в целом.


ну это классика жанра. Если у человека постоянно глючит серьёзный софт — значит проблема в нём
Re[6]: книги и литература по Exception
От: zelenyi_slon  
Дата: 10.02.11 20:16
Оценка:
U>Во-вторых, к примеру, смотрите http://rsdn.ru/forum/dotnet/3228446.1.aspx
Автор: Undying
Дата: 25.12.08
и http://rsdn.ru/forum/dotnet/3187458.1.aspx
Автор: Undying
Дата: 25.11.08
и обсуждение этих постов.


вопрос по:
http://www.rsdn.ru/forum/dotnet/3183616.1.aspx
Автор: _FRED_
Дата: 21.11.08


что конкретно меняется когда пишут:
catch(Exception ex)
вместо просто
catch
?
Re[11]: книги и литература по Exception
От: Sinix  
Дата: 11.02.11 02:46
Оценка:
Здравствуйте, zelenyi_slon, Вы писали:
А>>>если я оберну в try/catch DoWork — то что случится? inEdit как была тру в случае вылета эксепшена, так и установится в тру. EndEdit не выполнится.
S>>Угумс. А теперь представьте, что 99% вашего кода так или иначе дёргает BeginEdit и отлавливает исключения. Приложение не падает, но сделать вы ничего не сможете. Или гораздо худший сценарий: BeginEdit вызывается очень редко и часть кода не отлавливает исключения. Как результат, приложение будет падать нечасто, но ВНЕЗАПНО. И ни по стеку вызовов, ни дампу вы не узнаете настоящую причину падения — проблема возникла давным-давно.

_>Итого примерно след код:

_>в таком случае никаких подводных камней?
Никаких, если WriteTrialKeyToRegisty() либо записывает всё целиком, либо в случае ошибки удаляет записанное.

_>а что события? Имеете ввиду подписка на события?

Да.
Re[7]: книги и литература по Exception
От: Undying Россия  
Дата: 11.02.11 04:27
Оценка:
Здравствуйте, zelenyi_slon, Вы писали:

_>вопрос по:

_>http://www.rsdn.ru/forum/dotnet/3183616.1.aspx
Автор: _FRED_
Дата: 21.11.08


_>что конкретно меняется когда пишут:

_>catch(Exception ex)
_>вместо просто
_>catch
_>?

В приведенном в посте коде и в коде с просто catch теряется информация о произошедшем исключении, поэтому это плохой код. Нормальным является вот такой код:

            catch(Exception exc) // Плохо это
            {
                TraceHlp2.WriteException(ex); //Логгируем исключение
                return false; // А не это
            }
Re[2]: книги и литература по Exception
От: _FRED_ Черногория
Дата: 16.02.11 19:38
Оценка:
Здравствуйте, _FRED_, Вы писали:

А>>добрый день. Замечаю за собой, что не умею правильно обрабатывать эксепшины. Где можно наглядно про это почитать и вообще как правильно их обрабатывать?


_FR>Тут
Автор: _FRED_
Дата: 26.01.09
есть несколько ссылок на статьи.


Эх, топик, на который давал ссылку уже закрыт, а было бы так удобно иметь в одном месте "коллекцию" теперь я знаю чего
  Того, …
как не быть Покемоном
Help will always be given at Hogwarts to those who ask for it.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.