MFC'de Özel Durum İşleme
Bu makalede, MFC'de kullanılabilen özel durum işleme mekanizmaları açıklanmaktadır. İki mekanizma mevcuttur:
MFC sürüm 3.0 ve sonraki sürümlerde kullanılabilen C++ özel durumları
MFC 1.0 ve sonraki sürümlerde kullanılabilen MFC özel durum makroları
MFC kullanarak yeni bir uygulama yazıyorsanız C++ mekanizmasını kullanmanız gerekir. Mevcut uygulamanız bu mekanizmayı zaten kapsamlı olarak kullanıyorsa makro tabanlı mekanizmayı kullanabilirsiniz.
Mevcut kodu MFC özel durum makroları yerine C++ özel durumlarını kullanacak şekilde kolayca dönüştürebilirsiniz. Kodunuzu dönüştürmenin avantajları ve bunu yapmaya yönelik yönergeler Özel Durumlar: MFC Özel Durum Makrolarından Dönüştürme makalesinde açıklanmıştır.
MFC özel durum makrolarını kullanarak zaten bir uygulama geliştirdiyseniz, yeni kodunuzda C++ özel durumlarını kullanırken mevcut kodunuzda bu makroları kullanmaya devam edebilirsiniz. Özel Durumlar: Sürüm 3.0'daki Özel Durum Makrolarındaki Değişiklikler makalesi bunu yapmak için yönergeler sağlar.
Dekont
Kodunuzda C++ özel durum işlemesini etkinleştirmek için projenin Özellik Sayfaları iletişim kutusunun C/C++ klasöründeki Kod Oluşturma sayfasında C++ Özel Durumlarını Etkinleştir'i seçin veya /EHsc derleyicisi seçeneğini kullanın.
Bu makalede aşağıdaki konular ele alınır:
Özel Durumlar Ne Zaman Kullanılır?
Program yürütme sırasında bir işlev çağrıldığında üç sonuç kategorisi oluşabilir: normal yürütme, hatalı yürütme veya anormal yürütme. Her kategori aşağıda açıklanmıştır.
Normal yürütme
İşlev normal şekilde yürütülebilir ve döndürülebilir. Bazı işlevler çağırana işlevin sonucunu gösteren bir sonuç kodu döndürür. Olası sonuç kodları işlev için kesin olarak tanımlanır ve işlevin olası sonuç aralığını temsil eder. Sonuç kodu başarıyı veya başarısızlığı gösterebilir, hatta normal beklenti aralığındaki belirli bir hata türünü bile gösterebilir. Örneğin, dosya durumu işlevi dosyanın mevcut olmadığını belirten bir kod döndürebilir. Sonuç kodu birçok beklenen sonuçtan birini temsil ettiğinden "hata kodu" teriminin kullanılmadığını unutmayın.
Hatalı yürütme
Çağıran, bağımsız değişkenleri işleve geçirirken hata yapar veya işlevi uygun olmayan bir bağlamda çağırır. Bu durum bir hataya neden olur ve program geliştirme sırasında bir onay ile algılanmalıdır. (Onaylar hakkında daha fazla bilgi için bkz. C/C++ Onaylamaları.)
Anormal yürütme
Anormal yürütme, düşük bellek veya G/Ç hataları gibi programın denetimi dışındaki koşulların işlevin sonucunu etkilediği durumları içerir. Anormal durumlar, özel durumları yakalayıp oluşturarak ele alınmalıdır.
Özel durumların kullanılması özellikle anormal yürütme için uygundur.
MFC Özel Durum Desteği
İster doğrudan C++ özel durumlarını ister MFC özel durum makrolarını kullanın, CException Sınıfı'nı veya CException
çerçeve veya uygulamanız tarafından oluşturulabilecek türetilmiş nesneleri kullanırsınız.
Aşağıdaki tabloda MFC tarafından sağlanan önceden tanımlanmış özel durumlar gösterilmektedir.
Özel durum sınıfı | Anlamı |
---|---|
CMemoryException Sınıfı | Yetersiz bellek |
CFileException Sınıfı | Dosya özel durumu |
CArchiveException Sınıfı | Arşivleme/Serileştirme özel durumu |
CNotSupportedException Sınıfı | Desteklenmeyen hizmet isteğine yanıt |
CResourceException Sınıfı | Windows kaynak ayırma özel durumu |
CDaoException Sınıfı | Veritabanı özel durumları (DAO sınıfları) |
CDBException Sınıfı | Veritabanı özel durumları (ODBC sınıfları) |
COleException Sınıfı | OLE özel durumları |
COleDispatchException Sınıfı | Gönderme (otomasyon) özel durumları |
CUserException Sınıfı | Kullanıcıyı bir ileti kutusuyla uyaran ve ardından genel bir CException Sınıfı oluşturan özel durum |
Sürüm 3.0'dan bu yana, MFC C++ özel durumlarını kullanmıştır ancak yine de formdaki C++ özel durumlarına benzer eski özel durum işleme makrolarını destekler. Bu makrolar yeni programlama için önerilmiyor olsa da geriye dönük uyumluluk için hala desteklenmektedir. Makroları zaten kullanan programlarda, C++ özel durumlarını da serbestçe kullanabilirsiniz. Ön işleme sırasında makrolar, Visual C++ sürüm 2.0'dan itibaren C++ dilinin MSVC uygulamasında tanımlanan özel durum işleme anahtar sözcüklerini değerlendirir. C++ özel durumlarını kullanmaya başlarken var olan özel durum makrolarını yerinde bırakabilirsiniz. Makroları ve C++ özel durum işlemesini karıştırma ve eski kodu yeni mekanizmayı kullanacak şekilde dönüştürme hakkında bilgi için Özel Durumlar: MFC Makrolarını Kullanma ve C++ Özel Durumları ve Özel Durumlar: MFC Özel Durum Makrolarından Dönüştürme makalelerine bakın. Eski MFC özel durum makrolarını hala kullanmaya devam ediyorsanız, C++ özel durum anahtar sözcüklerini değerlendirin. Bkz . Sürüm 3.0'da Özel Durumlar: Özel Durum Makrolarındaki Değişiklikler. MFC, Yapılandırılmış Özel Durum İşleme bölümünde açıklandığı gibi Windows NT yapılandırılmış özel durum işleyicilerini (SEH) doğrudan desteklemez.
Özel Durumlar Hakkında Daha Fazla Bilgi
Aşağıdaki makalelerde özel durum teslimi için MFC kitaplığının kullanımı açıklanmaktadır:
Aşağıdaki makaleler, MFC özel durum makrolarını C++ özel durum anahtar sözcükleriyle karşılaştırır ve kodunuzu nasıl uyarlayabileceğinizi açıklar:
Özel Durumlar: Sürüm 3.0'da Özel Durum Makrolarındaki Değişiklikler
Özel Durumlar: MFC Makroları ve C++ Özel Durumlarını Kullanma
Ayrıca bkz.
Özel durumlar ve hata işleme için modern C++ en iyi yöntemleri