Функции Azure 2.x продолжают генерировать перехваченные исключения - PullRequest
0 голосов
/ 28 февраля 2019

В моем проекте Azure Functions 2.x у меня есть часть функции, блок try-catch без finally, который более или менее выглядит следующим образом.

Dictionary<string, int> varDict = null;
Tuple<string, DateTime> varTupl = null;
try
{
    varDict = await Core.GetDict(lcLat.Value, lcLong.Value);
    varTupl = await Core.GetTupl(lcLat.Value, lcLong.Value);
}
catch (AggregateException ae)
{
    ae.Flatten().Handle(ex =>
    {
        // `log` is an ILogger, the standard Azure Functions passed param
        log.LogError(ex, ""); // Writes the ex's error
        Debug.WriteLine(""); // Writes the ex's error
        // the written content is ommited for readability sake
        // But will be shown below
        return true;
    });
}
catch (Exception ex)
{
    // Does exactly like Handle() Does
}
if(varDict != null && varTupl != null)
{
    // The Code won't go here, and always return HTTP 500 Instead
}
else
{
    // Here neither
}

Run Сам метод является async Task<IActionResult>, с Core как класс static public, содержащий GetDict() и GetTupl() методы, каждый из них также является static async Task<T> со своим соответствующим T возвращаемым типом и оба неу него не может быть блока try-catch, только using (которые не должны вызывать никаких исключений, верно?)

Printed out, it means the Exception is handled correctly right ?

Проблема в том,даже если (я предполагаю) возникшие исключения затем всплыли в моем блоке try-catch, даже когда мой блок catch выполняет печать исключения с моим форматированием из блока catch, как показано на скриншоте, мои функции Azure продолжают возвращатьсяОшибка HTTP 500, пропуская оставшуюся часть кода после блока try-catch

Что я пробовал

  1. Отключите параметры отладки «Просто мой код» в моем Visual Stuido 2017
  2. Добавление AggregateExceptions, до этого ловится только на Exception
  3. Свести AggregateException до Handle() it

Это часто встречается в локальной среде разработки, или я просто все неправильно обрабатываю?

Кроме того, окно вывода сохраняетраспечатывать что-то вроде этого Even though being thrown the host is keep running - Part 1 и это Even though being thrown the host is keep running - Part 2 даже в состоянии ожидания (пока конечная точка HTTP не вызывается, просто запустите в режиме отладки, ожидая вызова в режиме ожидания)) это то, что меня беспокоит?те, которые даже связаны с моей проблемой

...