Мой код выглядит примерно так
var userStartTask = LroMdmApiService.AddUser(user);
// .... do some stuff
await userStartTask;
Когда AddUser() генерирует исключение, оно отображается как NullReferenceException. Он не ждет await.
Но если я структурирую код вот так...
var result = await LroMdmApiService.AddUser(user);
Тогда исключения перехватываются правильно. Может кто-нибудь сказать мне, что здесь происходит?
Вот полный код, показывающий проблему. Какова наилучшая практика для такого сценария?
class Program
{
private static void Main(string[] args)
{
CallAsync();
Console.ReadKey();
}
public static async void CallAsync()
{
var task = CallExceptionAsync();
ThrowException("Outside");
await task;
}
public static Task CallExceptionAsync()
{
return Task.Run(() =>
{
ThrowException("Inside");
});
}
public static void ThrowException(string msg)
{
throw new Exception(msg);
}
}
Подробнее здесь: https://stackoverflow.com/questions/323 ... eexception