Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.005 c
8-1212752371
zuzick
2008-06-06 15:39
2011.07.03
Отключить звук в TMediaPlayer


15-1300381955
dreamse
2011-03-17 20:12
2011.07.03
Прошу оценить созданный продукт - сетевой экран.


15-1300084811
smart
2011-03-14 09:40
2011.07.03
xml не отображает кириллицу


2-1301173364
Fr
2011-03-27 00:02
2011.07.03
Смещение ячеек в TDrawGrid


8-1213428249
Настя
2008-06-14 11:24
2011.07.03
Необходимо обработать исключительную ситуацию




   Наверх