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

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • engineerguy

    engineerguy

    10 Ocak 2010
  • knopik96

    knopik96

    7 Mayıs 2011