SORU
13 Ocak 2015, Salı


Yapıcı işlevine bir try - İstisna iptal programı

Eğer bu derleyici ile ilgili bir sorun olup olmadığını ya da eğer yanlış bir şey yapıyorum emin değilim. Visual Studio 2013 derleyici kullanıyorum.

İstisna en yapıcı başlatıcısı listemde kaynaklarının önemli miktarda elde etmek için gereken bir Dersim var. Yukarı işlevini bir try üye başlatıcı listesi sardım, orada durum yakalandı. Ama benim program hala yakalamak maddesi yeniden atmak dışında etmiyor olsa iptal eder. Gerçek kod göndermek için izin değilim. Bu eşdeğer demo kodu ile sorunu yeniden var. Biri bana bu adresi yardım edebilir misiniz?

#include <iostream>
using namespace std;
class A{
public:
    A() try : i{ 0 }{ throw 5; }
    catch (...){ cout << "Exception" << endl; }
private:
    int i;
};


int main(){
    A obj;
}

Windows bir uyarı alıyorum bu kod yürütme "() iptal çağrıldı". Sistem yakalanmamış bir istisna olarak bu tedavi etmek ve sonlandırmak arıyor sanırım).

Ben ana nesne yapımı şal öte yandan() try-catch bloğu özel durum düzgün yakalandı ve program normal olarak sona erer.

Eğer birisi yanlış bir şey yapıyorum Eğer bana söyleyebilir?

CEVAP
13 Ocak 2015, Salı


İlgili bir gotw var

http://gotw.ca/gotw/066.htm

Eğer catch bloğu içinde fırlatma bile temelde, bu özel durum rethrown otomatik olarak yapılacaktır

Eğer işleyici gövdesi";" sonra yakalamak atmak deyimi içeriyorsa blok belli ki ne olursa olsun özel Bir yeniden oluşturma::A() veya B::B() vardı yayılan. Ne daha az belirgin, ama açıkça standart içinde olduğunu belirtti blok atmak değil yakalamak (ya da orijinal yeniden oluşturma Eğer istisna, ya da yeni bir şey atmak) ve kontrol sonuna ulaştığında yapıcı veya yıkıcı, asıl o zaman catch block özel durum otomatik olarak yeniden atılır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FF Radio

    FF Radio

    16 Mayıs 2008
  • 趣味そうこ♪

    趣味そう

    3 Mart 2010
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009