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
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.
Neden ve C bir istisna catch yeniden o...
Neden Standart tarayıcı sanal makine d...
Neden try {...} finally { ... }; try {...
Neden C-yakalama-değeri 0 x'in la...
Neden pthreads’ durumu değişken fonksi...