Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вопрос про 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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо