Цитата:
Сообщение от
AndyD
Исключение внутри блока ttsbegin/ttscommit передает управление на следующий оператор после ttscommit самого верхнего уровня.
Т.е. обработчик должен выглядеть так
X++:
try
{
ttsbegin;
// что-то делаем
ttscommit;
}
catch
{
// обрабатываем исключение
}
Если у вам несколько вложенных ttsbegin/ttscommit, то исключения надо ловить на первом уровне
"Вот оно че, Михалыч"(с). Я то наивно думал, что по образу и подобию SEH реализованному например в С++ управление передается в ближайший блок Catch. А Аксапта оказывается по-другому хэндлит...
У меня то сам метод логгера именно так был оформлен:
X++:
try
{
ttsbegin;
// что-то делаем
ttscommit;
}
catch
{
// обрабатываем исключение
}
Но метод-то вызывался из процесса в котором уже была открыта транзакция, то есть в самом методе ttslevel уже был ненулевой. Спасибо!