#.net #asynchronous #error-handling
#.net #асинхронный #обработка ошибок
Вопрос:
Я пытаюсь вызвать метод GetOrders(id) с помощью await Task.Run() в async .net 5 API. Если метод GetOrders(id) выдает ошибку, я хочу, чтобы она отображалась до вызывающей асинхронной задачи GetIdAsny(int id). Но я всегда застреваю в try / catch внутри GetOrders, и ничего не всплывает. Я просто не понимаю. Спасибо за вашу помощь.
public async Task<ActionResult<IEnumerable<Order>>> GetIdAsync(int id)
{
try
{
return await Task.Run(() => getOrders(id));
}
catch (Exception exception)
{
//do something - never landing here
}
}
private List<Order> getOrders(int id)
{
try
{
List<Order> returnValue = new List<Order>();
//doing something that produces an error
return returnValue;
}
catch (Exception exception)
{
//always stuck here
throw new Exception("getOrders(" id.ToString() "):" exception.Message);
}
}
Комментарии:
1. Помимо вашей текущей проблемы, обычно плохая идея скрывать исходное исключение и только выводить его сообщение — лучше передать его как внутреннее исключение , чтобы оно сохраняло трассировку стека и т. Д.
2. @Damien_The_Unbeliever: спасибо за ваш вклад, в окончательной версии я сделаю это так, как вы рекомендуете.
3. Что именно вы подразумеваете под «застрял в try / catch»?