Mam następujący kod:
WebClient wc = new WebClient();
string result;
try
{
result = await wc.DownloadStringTaskAsync( new Uri( "http://badurl" ) );
}
catch
{
result = await wc.DownloadStringTaskAsync( new Uri( "http://fallbackurl" ) );
}
Zasadniczo chcę pobierać z adresu URL, a jeśli się nie powiedzie, z wyjątkiem, chcę pobrać z innego adresu URL. Oczywiście oba czasy są asynchroniczne. Jednak kod nie kompiluje się z powodu
błąd CS1985: nie można czekać w treści klauzuli catch
OK, z jakiegoś powodu jest to zabronione, ale jaki jest prawidłowy wzorzec kodu?
EDYTOWAĆ:
Dobrą wiadomością jest to, że C # 6.0 prawdopodobnie zezwoli na wywołania await zarówno w blokach catch, jak i na końcu .