AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.07.2014, 22:21   #1  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Уважаемый mfp умалчивает об одном важном отличии Debug::assert() от throw error(). В случае, если условие в Debug::assert() не выполняется, программа продолжает работать дальше. То есть, пользователи видят ошибку, если есть дебаггер, то он запускается, но при этом выполнение кода продолжается как ни в чём не бывало.

Не самая приятная особенность, если честно. Ведь в большинстве случаев assert() появляется не просто так, а для обозначения того, что нижеследующий код при невыполнении некоторых условий может работать некорректно. Логично было бы в такой ситуации код не выполнять, по-моему.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 03.07.2014, 07:48   #2  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Уважаемый mfp умалчивает об одном важном отличии Debug::assert() от throw error(). В случае, если условие в Debug::assert() не выполняется, программа продолжает работать дальше.
Надо добавить, что если код вызван из веб-сервиса, то Debug::assert(false) останавливает выполненение кода так же как throw error() если включено "Enable global breakpoints" на сервере. Я так понимаю если вызвать код в CIL то эффект будет такой же.

Ловить тикие ошибки - удовольствие то еще....
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0

Последний раз редактировалось Alex_KD; 03.07.2014 в 07:59.
Старый 03.07.2014, 10:50   #3  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
Я так понимаю если вызвать код в CIL то эффект будет такой же.
Если Debug::assert() вызвать в CIL, то выполнение не останавливается (хотя Enable global breakpoints у меня не активировано; возможно, дело в этом). В Infolog вываливается ошибка, но выполнение продолжается со следующей строчки.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax-erp: Debug BP errors in Dynamics AX 2012 Blog bot DAX Blogs 0 14.12.2012 23:11
ax-erp: Debug::assert() method calls in SYS layer triggering Dynamics AX 2012 debugger Blog bot DAX Blogs 0 10.12.2012 21:11
mfp: Dynamics AX EMEA Technical Conference 2011 Blog bot DAX Blogs 0 21.09.2011 18:11
kamalblogs: Debug::assert statements found in Sys layer in Dynamics Ax 2009 Blog bot DAX Blogs 3 19.07.2010 12:52
mfp: Articles on X++ development Blog bot DAX Blogs 0 23.08.2007 23:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:05.