Yapılandırılmış özel durum işleme (C++)
Windows 95, Windows 98 ve Windows 2000 (eski adıyla Windows NT), işletim sisteminin işbirliği ile ilgilidir, ancak programlama dilinde doğrudan desteğine de sahip yapılandırılmış özel durum işleme adlı özel durumları, sağlam bir yaklaşım destekler.
Dilbilgisi
try dışında deyimi :
__try bileşik deyim
__except( ifade ) bileşik deyim
Notlar
İşlemi normal olarak devam yeteneğini bozar ya da beklenmedik bir olay bir istisnadır. Özel durumlar, hem donanım hem de yazılım tarafından algılanabilir. Donanımla ilgili özel durumları, sıfır ile bir sayısal türdeki taşma bölme içerir. Yazılım özel durumlar dahil olanlar algılamak ve sinyal sistemine çağırarak RaiseException işlevini ve özel durumlarda Windows tarafından algılandı.
Yapılandırılmış özel durum işleme ile daha güvenilir kod yazabilirsiniz. Bellek blokları ve dosyalar gibi kaynakları beklenmeyen sonlandırma durumunda düzgün kapalı olduğundan emin olabilirsiniz. Üzerinde dayanmaz kısa yapılandırılmış koduyla yetersiz bellek gibi belirli sorunları da ele goto ifadeleri ya da dönüş kodlarını ayrıntılı sınama.
Deneyin-dışında ve try finally uygulamaların bir program yürütme normalde sonlandırmak olayları denetimini sağlayan c dili Microsoft uzantısı deyimleridir.
Not
Yapılandırılmış özel durum işleme c ve C++ kaynak dosyaları ile çalışır.Ancak, özellikle C++ için tasarlanmamıştır.Yapılandırılmış özel durum işleme bir C++ programında kullanıyorsanız, yerel nesneler için yıkıcı adlı rağmen (kullanırsanız, /EHsc), C++ özel durum işleme kullanarak kodunuzu daha taşınabilir olduğundan emin olun.C++ özel durum işleme mekanizması her tür özel durumlar ele alabilir, daha esnek.
İki yapılandırılmış özel durum işleme mekanizmaları vardır:
Özel durum işleyicilerini, hangi yanıt veya özel durum kapatmak
Sonlandırma işleyicileri, hangi kod bloğu içinde sonlandırma istisna neden olduğunda verilir
Bu iki tür işleyicileri farklıdır, ancak "Yığın unwinding" adlı bir işlem yakından ilişkilidir Bir özel durum ortaya çıktığında, Windows şu anda etkin olan en son yüklenen özel durum işleyicisi arar. İşleyici işlemlerden birini yapabilirsiniz:
Denetim diğer işleyicileri (özel durum tanımak için başarısız) iletirsiniz.
Tanı ancak istisna yoksayın.
Tanı ve özel durumunu işlemesi.
Özel durum tanıdığı özel durum işleyici, özel durumun oluştuğu sırada çalışmakta olan işlev olmayabilir. Bazı durumlarda, yığın üzerinde daha yüksek bir işlev olabilir. Yığın çerçevesinde tüm işlevleri yanı sıra çalışmakta işlevi sona erdirilir. Bu işlem sırasında yığın "unwound": olmadıkları sürece yerel değişkenler, İşlevler, sona statik, yığından kaldırılır.
Yığın unwinds gibi işletim sisteminin her işlev için yazdığınız herhangi bir işten çıkarma işleyicileri çağırır. Sonlandırma işleyicisi kullanımını olağan dışı sona ermesi nedeniyle açık kalır yoksa kaynakları temizlemek için bir şans verir. Önemli bir bölümü girdiyseniz, sonlandırma işleyicisinde çıkabilirsiniz. Programı kapatmak için kullanılacaksa, Kapanış ve geçici dosyalar kaldırılıyor gibi diğer düzeni görevleri gerçekleştirebilirsiniz.
Yapılandırılmış özel durum işleme kullan c modülleri varsa, C++ özel durum işleme kullanan C++ modülleri ile karışabilir. Bkz: özel durum işleme farklar.
Daha fazla bilgi için bkz: