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
к дотнету в целом.


ну это классика жанра. Если у человека постоянно глючит серьёзный софт — значит проблема в нём
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.