У меня есть веб-API. NET Core 3.1, который предоставляет доступ к некоторым длительным операциям. Скажем, например, клиент запрашивает API для выполнения некоторых вычислений, которые требуют времени. API делегирует этот запрос службе, в которую вводится репо и драйвер. Служба вызовет драйвер и передаст ему анонимную функцию, чтобы сообщить о ходе выполнения, чтобы служба могла соответствующим образом обновить репозиторий. Проще говоря, вот так:
//throw new Exception("This exception won't cause a crash");
_driver.startCalculation(arg1, arg2, (status) => {
//throw new Exception("This exception will cause a crash");
_repo.updateStatus(status);
});
К моменту выполнения кода в анонимной функции ответ уже был отправлен клиенту.
Если исключение происходит вне там клиент получает ответ 500 и сервер выживает. Однако внутри этого исключения будет sh весь процесс API.
Я ищу любую информацию, которая поможет мне понять, как я должен справиться с этим. Почему исключение вызывает полномасштабную ошибку sh? Моя первая идея - просто съесть любые исключения в анонимной функции, но меня беспокоит, что я просто скрываю симптом недостатка дизайна.