11.12.2006, 11:58 | #1 |
Участник
|
ChangeCompany Try...Catch
AXAPTA 2.5 SP3
Можно ли перехватить по Try...Catch ошибку в ChangeCompany()? Т.е. когда указана не существующая компания. Что-то у меня не получается... PHP код:
AXAPTA 2.5 SP3 |
|
11.12.2006, 12:05 | #2 |
Участник
|
в 3.0 вполне себе ловится, только в дебаггер вываливается, если открыт
X++: try { changecompany('test') { } } catch { info('catched'); } Последний раз редактировалось belugin; 11.12.2006 в 12:06. Причина: версия 3.0 |
|
11.12.2006, 12:31 | #3 |
Участник
|
А зачем нужен catch? может просто перед попыткой сменить компанию проверять ее существование?
Код: if (! CompanyTmpCheck::exist('ХХХ')) throw error(''); else changeCompany('ХХХ') { ... } |
|
11.12.2006, 12:42 | #4 |
Участник
|
Цитата:
|
|
11.12.2006, 12:52 | #5 |
Участник
|
Я так понимаю, пофиксили в 3.0. А можно уточнить, какой именно "catch" (тип исключения) в 3.0 отлавливает эту ошибку? Какой exeption?
К сожалению, в 2.5 еще не было универсального catch. Обязательно нужно явно указывать тип исключения. |
|
11.12.2006, 13:05 | #6 |
Участник
|
exception::Error
__________________
Axapta v.3.0 sp5 kr2 |
|
11.12.2006, 13:46 | #7 |
Участник
|
|
|
08.01.2009, 16:25 | #8 |
Участник
|
Цитата:
У меня такая же ситуация.............. Т.е. нужно проверять, есть ли такая компания и если есть, то перейти к ней. В версии 2.5 такую проверочную функцию не нашёл. Через exeptions тоже не удалось решить |
|
12.01.2009, 16:57 | #9 |
Участник
|
Пришлось делать проверку. В сообщении Gad приведено пример, который это делает.
Хотя назначение метода класса CompanyTmpCheck::exist(), судя по названию, это проверка того факта, что указанная компания не виртуальная, но можно использовать и для проверки факта существования компании. Или доработать код "под себя". Там обычный поиск записи в таблице \System Documentation\Tables\DataArea. Эта таблица содержит список вообще всех компаний. |
|
12.01.2009, 17:08 | #10 |
Участник
|
Цитата:
\Classes\xDataArea\checkAccessible (для 3.0 привел ссылку) Так как если прав у пользователя нет, то changecompany выдаст ошибку даже в случае корректного кода компании. Последний раз редактировалось Logger; 12.01.2009 в 17:10. |
|
12.01.2009, 17:19 | #11 |
Участник
|
Ловится но к сожалению не всегда.
Иногда вместо Exception::Error приходит Exception::Info Отладчик влияет на вид исключения Аналогично в Сom соединении регулярно вместо Exception:eadlock приходит Exception::Info Есть подозрение, что на это влияет настройка логирования длинных запросов SQL и дедлоков. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
TTS и try..catch | 7 | |||
changeCompany() | 1 | |||
catch | 3 | |||
try...catch при операциях с таблицей | 1 | |||
Глупый вопрос про try .. catch | 6 |
|