Aracılığıyla paylaş


try-finally deyimi (C)

Microsoft'a özgü

try-finally deyimi, uygulamaların bir kod bloğunun yürütülmesi kesildiğinde temizleme kodunun yürütülmesini garanti etmelerini sağlayan C dilinin Bir Microsoft uzantısıdır. Temizleme, belleği serbest bırakma, dosyaları kapatma ve dosya tanıtıcılarını serbest bırakma gibi görevlerden oluşur. deyimi try-finally , özellikle rutinden erken dönüşe neden olabilecek bir hata için denetim yapılan birkaç yere sahip yordamlar için yararlıdır.

try-finally-statement:
__try compound-statement __finally compound-statement

Yan tümceden __try sonraki bileşik deyim korunan bölümdür. Yan tümcesinden __finally sonraki bileşik deyim sonlandırma işleyicisidir. İşleyici, korunan bölümden çıkıldığında yürütülen bir eylem kümesini belirtir. Korunan bölümden bir özel durum (anormal sonlandırma) veya standart düşüş (normal sonlandırma) ile çıkılıp çıkılmayacağı önemli değildir.

Denetim, basit sıralı yürütme (fall through) ile bir __try deyime ulaşır. Denetim deyimine __try girdiğinde, ilişkili işleyicisi etkin hale gelir. Yürütme aşağıdaki gibi devam eder:

  1. Korunan bölüm yürütülür.

  2. Sonlandırma işleyicisi çağrılır.

  3. Sonlandırma işleyicisi tamamlandığında, yürütme deyiminden __finally sonra devam eder. Korunan bölümün sonu ne olursa olsun (örneğin, goto korunan gövdeden bir deyim aracılığıyla veya bir return deyim aracılığıyla), denetim akışı korunan bölümden çıkmadan önce sonlandırma işleyicisi yürütülür.

anahtar __leave sözcüğü bir try-finally deyim bloğu içinde geçerlidir. etkisi __leave bloğun sonuna atlamaktır try-finally . Sonlandırma işleyicisi hemen yürütülür. Bir deyimi aynı sonucu elde etmek için kullanılabilse de goto , deyimi goto yığın geri sarmaya neden olur. __leave Deyimi, yığın geri sarmayı içermediğinden daha verimlidir.

try-finally Deyimini veya çalışma zamanı işlevini kullanarak deyimden longjmp return çıkmak anormal sonlandırma olarak kabul edilir. Bir ifadeye atlamak __try yasal değil, bir ifadeden atlamak yasaldır. Kalkış noktası ile varış noktası arasında etkin olan tüm __finally ifadeler çalıştırılmalıdır. Buna yerel rahatlama denir.

Bir deyimi yürütülürken try-finally bir işlem sonlandırılırsa sonlandırma işleyicisi çağrılmaz.

Not

Yapılandırılmış özel durum işleme C ve C++ kaynak dosyalarıyla çalışır. Ancak, özellikle C++ için tasarlanmamıştır. Taşınabilir C++ programları için yapılandırılmış özel durum işleme yerine C++ özel durum işleme kullanılmalıdır. Ayrıca, C++ özel durum işleme mekanizması, herhangi bir türdeki özel durumları işleyebildiği için çok daha esnektir. Daha fazla bilgi için bkz. C++ Dil Başvurusu'nda özel durum işleme.

Deyimin try-except nasıl çalıştığını görmek için deyiminin örneğine try-finally bakın.

END Microsoft'a özgü

Ayrıca bkz.

try-finally deyimi (C++)