Показать сообщение отдельно
Старый 09.10.2020, 08:37   #8  
michel1971 is offline
michel1971
Участник
 
76 / 63 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Блок try catch бесполезен если он расположен внутри транзакции. Исключение не будет перехвачено таким блоком. Исключение всегда откатит все уровни транзакций до самого верхнего и будет поймано только тем блоком try catch который находится вне транзакции.
Всегда, да не всегда
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).