Как важно проверять в программах ошибки до конца
От: Michael7 Россия  
Дата: 19.06.12 16:40
Оценка: +3 -3 :)
Я иногда кое-что пишу или отлаживаю на Delphi или FreePascal (не только на них и вообще это не так важно). Сегодня отлаживал одну ошибку, программа почему-то падала. Выяснил, что падение возникает из-за ошибок в некоторых данных (это другая история), которые программа забывала проверить на корректность. Добавил проверку. Можно было бы успокоиться, что все заработало, но решил выяснить, из-за чего она все-таки падала при неправильных данных.

Это меня ошарашило. Я несмотря на то, что казалось бы имею давний опыт программирования на Delphi еще с 90-х годов и иногда периодически что-то писал, не знал, что exit внутри try...finally вызывает не немедленный выход из функции, а переход к блоку finally. Думал, что этот блок исполняется только в нормальном случае или при исключениях, а exit немедленно завершает функцию. Ошибался. Теперь удивляюсь, как же я умудрился раньше не нарваться на ошибки в этом месте (дважды вызов Free например из-за этого)

Мораль в качестве выводов:

1) Если есть ошибка полезно докопаться до ее истоков, а не просто избавиться от нее.
2) Можно обнаружить что-то для себя новое в казалось бы давно и хорошо известном.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.