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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.09.2008, 12:15   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Для начала, строим тестовый Job для проверки собственных идей. У меня Ax2.5, поэтому логика может несколько отличаться в старших версиях.

X++:
static void test_TryCatchTransaction(Args _args)
{
    ;

    try
    {
        ttsbegin;
                ttsbegin;
                        throw exception::Deadlock;
                ttscommit;
        ttscommit;
    }
    catch (exception::Break)
    {
        info('exception::Break');
    }
    catch (exception::DDEerror)
    {
        info('exception::DDEerror');
    }
    catch (exception::Deadlock)
    {
        info('exception::Deadlock');
    }
    catch (exception::Error)
    {
        info('exception::Error');
    }
    catch (exception::Info)
    {
        info('exception::Info');
    }
    catch (exception::Internal)
    {
        info('exception::Internal');
    }
    catch (exception::Sequence)
    {
        info('exception::Sequence');
    }
    catch (exception::Warning)
    {
        info('exception::Warning');
    }

    info(strFmt("Количество вложенных транзакций = %1", appl.ttsLevel()));
}
Как и положено, исключение "выбрасывает" код на самый верхний уровень транзакции, автоматически откатывая все вложенные транзакции. Точнее, на обработчик Try..Catch внутри которого и расположена инициализация самого верхнего уровня транзакции. Все вложенные Try..Catch при этом игнорируются.

Однако возникают следующие вопросы:

Находятся ли команды по началу и завершению транзакции в одном методе? Внутри одного Try..Catch? По крайней мере, вызов методов по началу и завершению транзакции?

Не возникает ли ситуации, когда после выброса на верхний уровень транзакции команда по завершению транзакции оказывается вне обработчика Try..Catch?

Т.е. надо отследить вот такие программные конструкции

X++:
static void test_TryCatchTransaction(Args _args)
{
    ;

    try
    {
        ttsbegin;
                throw exception::Error;
    }
    catch (exception::Error)
    {
        info('exception::Error');
    }

    // Вот здесь возникнет ошибка
    ttscommit;

}
Старый 29.09.2008, 14:14   #2  
demon46 is offline
demon46
Участник
 
78 / 12 (1) ++
Регистрация: 26.06.2006
В методе createNeeds()
Не используются ttsbegin ttscommit. Вот блин ну где же может быть ошибка
Старый 29.09.2008, 14:29   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от demon46 Посмотреть сообщение
В методе createNeeds()
Не используются ttsbegin ttscommit. Вот блин ну где же может быть ошибка
А до вызова метода run() нигде транзакция не открывается?
с этими непарными транзакциями вечно морока, пока найдешь откуда ползет поседеешь
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Теги
транзакции

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка (?) при печати приходного ордера в DAX 4.0 SP2 Ivanhoe DAX: Программирование 7 19.01.2021 14:13
Не запускается Axapta. Общая ошибка сети. Lucky13 DAX: Администрирование 3 25.09.2007 13:02
Ошибка в формате числа. 36AC DAX: Программирование 7 19.10.2006 10:04
Ошибка при обработке С-Ф Sergo DAX: Программирование 7 20.01.2006 11:56
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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