Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.011 c
15-1300438782
compuser
2011-03-18 11:59
2011.07.03
Несворачиваемая, дырявая форма


15-1300391272
vajo
2011-03-17 22:47
2011.07.03
Проблема со звуком на компе.


2-1300823978
Xalexo
2011-03-22 22:59
2011.07.03
как найти числовой ID, путь и описание службы (service)


2-1301232928
картман
2011-03-27 17:35
2011.07.03
как правильно с точки зрения ООП


15-1300454463
stas
2011-03-18 16:21
2011.07.03
потоковое видео