|
08.10.2020, 23:18 | #1 |
Участник
|
Блок try catch бесполезен если он расположен внутри транзакции. Исключение не будет перехвачено таким блоком. Исключение всегда откатит все уровни транзакций до самого верхнего и будет поймано только тем блоком try catch который находится вне транзакции.
|
|
09.10.2020, 08:37 | #2 |
Участник
|
Цитата:
X++: static void TryCatchTest(Args _args) { ttsBegin; try { ttsBegin; try { ttsBegin; info(strFmt("ttslevel %1", appl.ttsLevel())); throw Exception::DuplicateKeyException; ttsCommit; } catch { error(strFmt("catch 2 ttslevel %1", appl.ttsLevel())); } ttsCommit; } catch { info(strFmt("catch ttslevel %1", appl.ttsLevel())); } ttsCommit; } Последний раз редактировалось michel1971; 09.10.2020 в 08:41. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), A_BAS (1). |
09.10.2020, 09:44 | #3 |
Участник
|
Цитата:
Всегда, да не всегда
|
|
09.10.2020, 10:20 | #4 |
Участник
|
Для UpdateConflict так же работает. Поэтому нужно правильно обрабатывать исключение, как в \Classes\Tutorial_RunbaseBatch\run например, плюс добавить в него обработку исключения DuplicateKeyException
|
|