|
![]() |
#1 |
MCTS
|
Небольшой уточняющий комментарий, чтобы удостовериться
правильно ли я понимаю данную ситуацию (если где не прав - прошу поправить/дополнить): 1. В DAX 4.0 перехват ошибки в try/catch подразумевает неявный вызов ttsabort (кроме перехвата исключения Exception::UpdateConflict). 2. В DAX 4.0 "откат" любой вложенной транзакции всегда означает откат всей цепочки транзакций. 3. Учитывая вышесказанное имеем текущую реализацию: при возникновении исключения оно эскалируется "не перехваченным" вплоть до обработчика исключений самой внешней транзакции. При этом все транзакции, включая вложенные, откатываются. X++: static void Test_TTS_1(Args _args) { ; try { ttsbegin; //tts level 1 //Action block level 1 //.. try { ttsbegin; //tts level 2 try { throw error("my exception"); } catch //implicit ttsabort { error("level 3 catched"); } ttscommit; info("level 3 completed"); } catch //implicit ttsabort { error("level 2 catched"); } //Action block level 2 //.. ttscommit; info("level 2 completed"); } catch //implicit ttsabort { error("level 1 catched"); } info("level 1 completed"); } Error Сообщение (01:26:29) my exception Error Сообщение (01:26:29) level 1 catched Info Сообщение (01:26:29) level 1 completed |
|
|
За это сообщение автора поблагодарили: Товарищ ♂uatr (1). |
|
![]() |
||||
Тема | Ответов | |||
ChangeCompany Try...Catch | 10 | |||
staticsax: Real world processing: TTS and exceptions | 0 | |||
catch | 3 | |||
try...catch при операциях с таблицей | 1 | |||
Глупый вопрос про try .. catch | 6 |
|