Всем привет!
У меня при обновлении таблицы идёт запрос WebRequest к внешней службе, чтобы и там обновить данные
X++:
public void update()
{
ttsBegin;
super();
this.MyRequest(this);
ttsCommit;
И если при запросе/ответе возникает ошибка, то блок catch внутри моей функции не вызывается.
Функция имеет вид наподобии такого:
X++:
str responseString;
System.Net.WebRequest webRequest;
System.Net.HttpWebResponse httpResponse;
CLRObject responseObj;
System.IO.Stream stream;
System.IO.StreamReader streamReader;
System.Exception ex;
System.Net.WebException webException;
;
try
{
if (!urlAPI)
throw error("Error");
codeAccessPermission::revertAssert();
new InteropPermission(InteropKind::ClrInterop).assert();
webRequest = System.Net.WebRequest::Create(urlAPI);
webRequest.set_Method('POST');
stream = webRequest.GetRequestStream();
stream.Write(arrayOfBytes,0,arrayOfBytes.get_Length());
stream.Close ();
httpResponse = webRequest.GetResponse();
}
catch (Exception::CLRError)
{
ex = ClrInterop::getLastException();
if (ex != null)
{
ex = ex.get_InnerException();
if ((ex != null) && (ex is System.Net.WebException))
{
webException = ex as System.Net.WebException;
responseObj = webException.get_Response();
httpResponse = responseObj as System.Net.HttpWebResponse;
}
}
}
catch
{
error("Error");
return '';
}
stream = httpResponse.GetResponseStream();
streamReader = new System.IO.StreamReader(stream);
responseString = streamReader.ReadToEnd();
streamReader.Close();
stream.Close();
httpResponse.Close();
codeAccessPermission::revertAssert();
return responseString;
Как споймать ошибки в моей функции/запросе и откатывать обновления?