SORU
15 Ocak 2012, Pazar


Catch bloğu bekliyor

Aşağıdaki kodu var:

WebClient wc = new WebClient();
string result;
try
{
  result = await wc.DownloadStringTaskAsync( new Uri( "http://badurl" ) );
}
catch
{
  result = await wc.DownloadStringTaskAsync( new Uri( "http://fallbackurl" ) );
}

Temelde bir URL den indirmek istiyorum ve bir istisna ile başarısız olduğunda başka bir URL den indirmek istiyorum. Tabii ki her ikisi de zaman zaman uyumsuz. Kodu ancak, çünkü . derleme değil

hata CS1985: catch vücut bekliyor tümcesi Olamaz

TAMAM, sebebi ne olursa olsun ama doğru kod desen burada ne için yasak?

DÜZENLEME:

İyi haber C# 6.0 will likely allow await calls both in catch and finally blocks.

CEVAP
15 Ocak 2012, Pazar


Bu kodu bir bayrak kullanarak: catch blok await taşımak için yeniden yazabilirsiniz

WebClient wc = new WebClient();
string result = null;
bool downloadSucceeded;
try
{
  result = await wc.DownloadStringTaskAsync( new Uri( "http://badurl" ) );
  downloadSucceeded = true;
}
catch
{
  downloadSucceeded = false;
}

if (!downloadSucceeded)
  result = await wc.DownloadStringTaskAsync( new Uri( "http://fallbackurl" ) );

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • incognitotraveler

    incognitotra

    27 Mayıs 2010
  • Stanislav Petrov

    Stanislav Pe

    7 ŞUBAT 2009