как проверить асин c задача пуста или нет - PullRequest
0 голосов
/ 15 января 2020

Я вызываю API с методом WebClient и asyn c, теперь я хочу управлять возможными ошибками, такими как нулевое значение. Я использовал try / catch, но ни одно из исключений не работает и не может перехватить ошибку

Как я могу поймать ошибки?

private async Task<string> GetTaskAsync(string API)
{
    try
    {
        using (WebClient client = new WebClient())
        {
            client.Encoding = Encoding.UTF8;
            return await client.DownloadStringTaskAsync(API);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        return null;
    }
    catch (NullRefrenceException ex)
    {
        Console.WriteLine(ex.Message);
    }
}

1 Ответ

4 голосов
/ 15 января 2020

Вы должны изменить порядок ловли. NullReferenceException происходит от класса Exception, поэтому, если возникает NullReferenceException, оно будет перехвачено первым блоком catch. Вы должны сделать что-то вроде ниже.

try
{
  using (WebClient client = new WebClient())
  {
    client.Encoding = Encoding.UTF8;
    return await client.DownloadStringTaskAsync(API);
  }
}
catch (NullRefrenceException ex)
{
   Console.WriteLine(ex.Message);
}
catch (Exception ex)
{
  Console.WriteLine(ex.Message);
  return null;
}
...