.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();
}