|
![]() |
#1 |
MCTS
|
Цитата:
This behavior is by design. Whenever an exception is thrown all transactions are rolled back (except for two special exceptions namely Exception::UpdateConflict and Exception::UpdateConflictNotRecovered, that do not roll back the active transactions).
Info Сообщение (00:41:37) rec count: 3 Info Сообщение (00:41:37) level 1 catched Info Сообщение (00:41:37) level 1 completed Info Сообщение (00:41:37) rec count: 0 X++: static void Test_TTS_1(Args _args) { Test_TTS_1 Test_TTS_1; ; delete_from Test_TTS_1; try { ttsbegin; //tts level 1 try { ttsbegin; //tts level 2 try { Test_TTS_1.insert(); Test_TTS_1.insert(); Test_TTS_1.insert(); select count(recid) from Test_TTS_1; info("rec count: " + int2str(Test_TTS_1.RecId)); //throw error("my exception"); throw Exception::UpdateConflictNotRecovered; //throw Exception::UpdateConflict; } catch //implicit ttsabort { info("level 3 catched"); } ttscommit; info("level 3 completed"); } catch //implicit ttsabort { info("level 2 catched"); } ttscommit; info("level 2 completed"); } catch //implicit ttsabort { info("level 1 catched"); } info("level 1 completed"); select count(recid) from Test_TTS_1; info("rec count: " + int2str(Test_TTS_1.RecId)); } |
|
|
|