24.03.2023, 14:10 | #1 |
Участник
|
Почему может не работать Exception внутри транзакции
Исторически всегда было что UpdateConflict и DuplicateKeyException не прерывают транзакцию чем успешно вроде как пользовался некоторое время назад (а в 365 вроде стало/было почти стандартом обхода MS кода).
И вдруг юзая что то типа ax-erp: Try Catch and transactions Обнаружил что было когда то Warning UpdateConflict can be caught inside transaction а сейчас UpdateConflict can only be caught outside of the transaction Why? И как обходить это? не хочу в моменте код от MS. Последний раз редактировалось axm2017; 24.03.2023 в 14:24. |
|
24.03.2023, 15:01 | #2 |
Участник
|
Мне кажется ничего не поменялось.
Все зависит от того когда транзакция началась. Если внутри блока try то конечно прервется при любом исключении. Просто потому что за блок try вышли. |
|
27.03.2023, 10:04 | #3 |
Участник
|
This behavior applies for both exceptions that are thrown manually and exceptions that the system throws. When an exception is thrown inside a ttsBegin-ttsCommit transaction block, no catch statement inside that transaction block can process the exception, (unless it is a UpdateConflict or a DuplicateKeyException).
https://learn.microsoft.com/en-us/dy...xpp-exceptions Как понимаю для UpdateConflict и DuplicateKeyException можно было обрабатывать в транзакции. В 12 точно. Судя по тексту и в 365 должно быть так же, но на моем приложении это не так. |
|
27.03.2023, 11:29 | #4 |
Участник
|
Проблема решена. В общем действительно все работает как и должно. Ошибка была в коде обработки исключения.
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
goshoom: Exception handling in PU31 | 0 | |||
goshoom: Catching exceptions in AX 7 | 4 | |||
Почему запрос CustTransOpen именно такой? | 18 | |||
Почему может не передаваться args().record() ? | 5 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|