Текущий архив: 2011.07.03;
Скачать: CL | DM;
Внизвопрос про assert ы Найти похожие ветки
← →
young_dev (2011-03-29 15:51) [0]Использование 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), "Ошибка целостности");
← →
clickmaker © (2011-03-29 15:58) [1]вроде как в справке достаточно подробно расписано.
В частности
In Delphi code, use Assert as a debugging tool 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.
← →
OW © (2011-03-29 16:00) [2]ну, вроде assert, это когда вообще мир на голову перевернулся, вроде совсем чего-то нереальное случилось..
у меня субъекты Tsubject, например, имеют признак J или P (char), но его по var отдаю в модуль писанный, не мной, там св-во это вообще не нужно, но если его сломают там - будет именно assert(ahtung надо передлать :) ).
вот. Хотя это имхо только
← →
Anatoly Podgoretsky © (2011-03-29 16:33) [3]> young_dev (29.03.2011 15:51:00) [0]
Дело вкуса, некоторые используют их всегда, там же и строку показывает
← →
han_malign (2011-03-29 16:40) [4]
> но если его сломают там
- и вот будут твои потомки компилироваться с{$C-}
, и голову ломать - что ж за фигня творится...
← →
Игорь Шевченко © (2011-03-29 16:49) [5]
> Хотя это имхо только
Справку читать и не позориться!
← →
Anatoly Podgoretsky © (2011-03-29 17:01) [6]Может ну их эти ассерты нафиг, и прочии места тоже прикрыть блоками try ... except end;
Программа будет без ошибок, серьезная такая, солидная программа.
← →
Игорь Шевченко © (2011-03-29 17:02) [7]у asserta есть полезная фича - он номер строки показывает
← →
_Юрий (2011-03-29 22:53) [8]
> - и вот будут твои потомки компилироваться с {$C-}, и голову
> ломать - что ж за фигня творится...
Угу. Потенциальные грабли.
А если еще написать нечто типа
Assert(MyBoolFunc) как способ проверки результата функции, то и вообще смешно получится в релиз-сборке (с отключенными ассертами).
← →
Leonid Troyanovsky © (2011-03-29 23:04) [9]
> Игорь Шевченко © (29.03.11 17:02) [7]
> у asserta есть полезная фича - он номер строки показывает
Дык, уж все знают, что ошибки бывают токмо в 17 строке.
--
Regards, LVT.
← →
Игорь Шевченко © (2011-03-29 23:45) [10]
> Дык, уж все знают, что ошибки бывают токмо в 17 строке.
У меня в 672-ой. Но редко :)
← →
OW © (2011-03-30 08:40) [11]номер строки это неплохо, не замечал
с этим jedi тоже справляется, правда, при включении отладочной инф-ции
> Справку читать и не позориться!
так тут же намного популярнее объясняют :)
тем более лучше вовремя начать делать правильнее
← →
Anatoly Podgoretsky © (2011-03-30 10:04) [12]> Игорь Шевченко (29.03.2011 23:45:10) [10]
Но точно, поскольку Assert говорит правду
Страницы: 1 вся ветка
Текущий архив: 2011.07.03;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.003 c