@Nikita07

Как продолжить выполнение кода после “выброса” exception?

Помогите разобраться
Есть следующий код и проблема заключается в том, что если URL-адреса (передаваемого в качестве request) не существует или он в данный момент не отвечает, то программа выкидывает Exception и на этом заканчивает работа, а мне необходимо, чтобы работа продолжалась, т.е. Exception появлился, в Logger записался, но работа продолжилась в обычном режиме, как так можно сделать?
public async Task<AuctionRequest> ProcessBidRequest(BidRequestModel requestModel, string endpoint, string protocol)
        {
            try
            {
                var requestString = JsonConvert.SerializeObject(requestModel);

                using var request = new HttpRequestMessage(HttpMethod.Get, endpoint);
                {
                    request.Content = new StringContent(requestString, Encoding.UTF8, "application/json");
                }
                request.Headers.Add("x-openrtb-version", protocol);

                using var response = await _client.SendAsync(request);

                if (!response.IsSuccessStatusCode)
                    throw new BadResponseException(response.ReasonPhrase);

                var respString = await response.Content.ReadAsStringAsync();

                if (respString.Length == 0)
                    throw new ArgumentException("The response is empty string.");

                return new AuctionRequest(requestModel, JsonConvert.DeserializeObject<BidResponseModel>(respString), protocol);

            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex.Message);
                throw ex;
            }
        }


Сам метод вызвается при переборе массива, вот часть кода, которая отвечает за вызов данного метода

int k = 0;
foreach (var advert in rtb_partners)
{
    string[] address = { //Список URL-адресов };
    bids[i++] = ProcessBidRequest(bidRequest, address[k++], protocolVersion);
}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Не делай throw в блоке catch, или делай try-catch в цикле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы