![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос про assert'ы
young_dev © (2011-03-29 15:51:00)Использование Assert'ов вместо raise Exception.Create() правильно с точки зрения организации кода или же их следует использовать только при отладке, а для релиза отключать.
например вместо того, чтобы писать:
if is_full(nodeName) and not ((from_ver = Ver) or
(from_size = Size) or (from_crc32 = CRC32)) then
raise Exception.Create('Ошибка целостности');
можно так:
Assert(is_full(nodeName) or (from_ver = Ver) and
(from_size = Size) and (from_crc32 = CRC32), 'Ошибка целостности');
Anatoly Podgoretsky (2011-03-30 10:04:00) [1]> Игорь Шевченко (29.03.2011 23:45:10) [10]
Но точно, поскольку Assert говорит правду
OW (2011-03-30 08:40:00) [2]номер строки это неплохо, не замечал
с этим jedi тоже справляется, правда, при включении отладочной инф-ции
> Справку читать и не позориться!
так тут же намного популярнее объясняют :)
тем более лучше вовремя начать делать правильнее
Игорь Шевченко (2011-03-29 23:45:00) [3]
> Дык, уж все знают, что ошибки бывают токмо в 17 строке.
У меня в 672-ой. Но редко :)
Leonid Troyanovsky (2011-03-29 23:04:00) [4]
> Игорь Шевченко © (29.03.11 17:02) [7]
> у asserta есть полезная фича - он номер строки показывает
Дык, уж все знают, что ошибки бывают токмо в 17 строке.
--
Regards, LVT.
_Юрий (2011-03-29 22:53:00) [5]
> - и вот будут твои потомки компилироваться с {$C-}, и голову
> ломать - что ж за фигня творится...
Угу. Потенциальные грабли.
А если еще написать нечто типа
Assert(MyBoolFunc) как способ проверки результата функции, то и вообще смешно получится в релиз-сборке (с отключенными ассертами).
Игорь Шевченко (2011-03-29 17:02:00) [6]у asserta есть полезная фича - он номер строки показывает
Anatoly Podgoretsky (2011-03-29 17:01:00) [7]Может ну их эти ассерты нафиг, и прочии места тоже прикрыть блоками try ... except end;
Программа будет без ошибок, серьезная такая, солидная программа.
Игорь Шевченко (2011-03-29 16:49:00) [8]
> Хотя это имхо только
Справку читать и не позориться!
han_malign (2011-03-29 16:40:00) [9]
> но если его сломают там
- и вот будут твои потомки компилироваться с{$C-}, и голову ломать - что ж за фигня творится...
Anatoly Podgoretsky (2011-03-29 16:33:00) [10]> young_dev (29.03.2011 15:51:00) [0]
Дело вкуса, некоторые используют их всегда, там же и строку показывает
OW (2011-03-29 16:00:00) [11]ну, вроде assert, это когда вообще мир на голову перевернулся, вроде совсем чего-то нереальное случилось..
у меня субъекты Tsubject, например, имеют признак J или P (char), но его по var отдаю в модуль писанный, не мной, там св-во это вообще не нужно, но если его сломают там - будет именно assert(ahtung надо передлать :) ).
вот. Хотя это имхо только
clickmaker (2011-03-29 15:58:00) [12]вроде как в справке достаточно подробно расписано.
В частности
In Delphi code, use Assert as a debuggingtool to test that
и
The SysUtils unit causes runtime errors to be turned into exceptions. If SysUtils is not used anywhere in your application, you will get a runtime error 227 rather than an EAssertionFailed exception. This runtime error will halt the program.