Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Обработка исключения при вызове запроса #147

Open
malikov-pro opened this issue Sep 16, 2024 · 1 comment

Comments

@malikov-pro
Copy link

Предлагаю расширить метод добавив в Ответ "ОписаниеОшибки" и "ПодготовленныйЗапрос", использую для формирования лога ошибки (ЖР+Sentry).

Функция ВызватьHTTPМетод(Сессия, Метод, URL, ДополнительныеПараметры)

	ПодготовленныйЗапрос = ПодготовитьЗапрос(Сессия, Метод, URL, ДополнительныеПараметры);
	
	НастройкиПодключения = НастройкиПодключения(Метод, URL, ДополнительныеПараметры);
	
	Попытка
		
		Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);
		
		Если НастройкиПодключения.РазрешитьПеренаправление И Ответ.ЭтоРедирект Тогда
			// INFO: по хорошему аутентификацию нужно привести к новых параметрам, но пока будем игнорировать.
			Ответ = ПеренаправитьЗапрос(Сессия, НастройкиПодключения, ПодготовленныйЗапрос, Ответ);
		КонецЕсли;
		
		Ответ.Вставить("ОписаниеОшибки", "");
	Исключение
		Ответ = Новый Структура;
		Ответ.Вставить("ОписаниеОшибки", ОписаниеОшибки());
	КонецПопытки;
	
	Ответ.Вставить("ПодготовленныйЗапрос", ПодготовленныйЗапрос);
	
	Возврат Ответ;

КонецФункции
@leemuar
Copy link
Collaborator

leemuar commented Oct 10, 2024

Идея и желание понятное, но такое изменение не совместимо с текущим поведением всех методов, отправляющих запрос.

Оборачивая ОтправитьЗапрос() в попытку отключается проброс исключений вверх, в вызывающий код. Кто-то может на это рассчитывать. И добавляется необходимость всегда проверять значение свойства ответа "ОписаниеОшибки", чтобы понять успешно запрос выполнился или нет.

Понятно, что это из-за того, что при исключении невозможно получить исходный запрос, к нему приведший. Но уж слишком меняет использование исключений в библиотеке. Возможно есть другие способы добиться такого.

Пока на уме только какой-то выходной параметр, может в ДополнительныеПараметры какой-то спецключ добавить, куда будет что-то писаться в случае исключения

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants