SORU
22 EKİM 2010, Cuma


Neden Try-Catch kaşlı kıvırcık gerektirir

Sadece merak: Neden try catch in C# (Java da?) için sözdizimi aşağıdaki gibidir sabit çoklu ifadeler için kodlanmış? Neden dili izin vermez:

int i;
string s = DateTime.Now.Seconds % 2 == 1 ? "1" : "not 1";
try
   i = int.Parse(s);
catch
   i = 0;

Örnek önemsiz amaçlıdır. int.TryParse olduğunu biliyorum.

CEVAP
22 EKİM 2010, Cuma


GÜNCELLEME:Bu soru my blog on December 4th, 2012 konu oldu. Ayrıca ilginizi çekebilecek blog anlayışlı bir yorum vardır. Harika soru için teşekkür ederiz!


Diğerleri de belirtildiği gibi, önerilen özellik kafa karıştırıcı olduğunu belirsizlikler tanıttı. İlgilenen varsa bu özelliği desteklemek için karar için başka gerekçeler olsa da orada görmüştüm, dil tasarımı notları arşivi kontrol ettim.

Bu kararı haklı çıkaracak bir dil tasarımı notları arşiv içinde bir şey görüyorum. Bildiğim kadarıyla, C# benzer bir sözdizimi ile diğer diller yaptığı bir şey, çünkü bu şekilde belirsizlik sorunu yüzünden böyle yapıyor.

Ama ilginç bir şey öğrendim. C ilk tasarım# try-catch-finally yoktu! Bir av ile bir denemek istedim ve son olarak o zaman eğer yazmak zorunda kaldım:

try
{
  try
  {
      XYZ();
  }
  catch(whatever)
  {
     DEF();
  }
}
finally
{
  ABC();
}

olan, şaşırtıcı olmayan bir şekilde, tam olarak nasıl derleyici analiz try-catch-finally; sadece sonlarını içine try-catch içinde deneyin sonunda üzerine ilk analizi ve davrandığı için de öyle demiştin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010