Показать сообщение отдельно
Старый 12.01.2017, 19:10   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
642 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
.NET-код не обязан вам вернуть то исключение, которое вы ожидаете.
Если код в АХ прерывается, значит исключение все-таки имеет место.
.NET вернет вам целую кучу необработанных исключений. И если в вашем консольном приложении все выглядит хорошо, в АХ появляются подводные камни, о которых вы и не догадываетесь.
Когда-то сделал себе метод для АХ4, который выводит исключения .NET в инфолог.
X++:
public void clrWarning()
{
    Microsoft.Dynamics.BusinessConnectorNet.BusinessConnectorException  lastException;
    ;

    lastException = ClrInterop::getLastException();
    while(lastException)
    {
        warning(lastException.get_Message());
        lastException = lastException.get_InnerException();
    }
}
P.S. Ваш код в Аксапте должен быть обернут критической секцией, наподобие такой:
X++:
try
{
    new InteropPermission(InteropKind::ClrInterop).assert();
    // ...
    CodeAccessPermission::revertAssert();
}
catch (Exception::CLRError)
{
    this.clrWarning();
}
__________________
// no comments
За это сообщение автора поблагодарили: Logger (1), syl (1).