Aracılığıyla paylaş


(Yapısal) c ve C++ özel durumlar

Daha kolay taşınabilir kod yazmak istiyorsanız, yapılandırılmış özel durum işleme bir C++ programında kullanmanız önerilmez.Ancak, bazen ile derlemek isteyebilirsiniz /EHa ve yapılandırılmış özel durumlar ve C++ kaynak kodu birleştirin ve her iki tür özel durumları işlemek için bazı tesis gerekir.Yapılandırılmış özel durum işleyici nesneleri veya yazılı istisnalar bir kavram olduğundan, C++ kod ile oluşan özel durumları işleyemez; Ancak, C++ catch işleyicileri yapılandırılmış özel durum işleme.Bu tür, C++ özel durum işleme sözdizimi olarak (deneyin, throw, catch) c Derleyici ancak sözdizimi yapılandırılmış özel durum kabul edilmez (__try, __except, __finally) C++ Derleyici tarafından desteklenir.

Bkz: _set_se_translator C++ özel durumlar olarak yapılandırılmış özel durum işleme hakkında bilgi.

Karıştırırsanız, yapısal ve C++ özel durumlar, aşağıdakileri unutmayın:

  1. C++ özel durumlar ve yapılandırılmış özel durumlar içinde aynı işlevi karıştırılamaz.

  2. Sonlandırma işleyicileri (__finally blokları) her zaman, bir özel durum oluşturulduktan sonra bile unwinding sırasında yürütülür.

  3. C++ özel durum işleme catch ve koruma mantığı ile derlenen tüm modüllerdeki rahatça /eh derleyici seçeneği (Bu seçenek rahatça semantiği etkinleştirir).

  4. Hangi yıkıcı işlevleri için tüm nesneleri olarak adlandırılan değil bazı durumlar olabilir.Örneğin, bir başlatılmamış işlev işaretçisi arama işlevini yapmaya çalışırken yapılandırılmış özel durum oluşur ve bu işlev çağrısı önce yoksundu parametreleri nesneler olarak alır, bu nesnelerin yığın açılımı sırasında adlı kendi yıkıcı olmayacak.

Hangi konu hakkında daha fazla bilgi edinmek istiyorsunuz?

Ayrıca bkz.

Başvuru

C++ özel durum işleme