Názor ke článku Náhrada chybějícího finally v C++11 od Ondřej Novák - [7] Je pravdou, že výjimky zde nejsou řešeny....

  • 9. 6. 2012 22:47

    Ondřej Novák (neregistrovaný)

    [7] Je pravdou, že výjimky zde nejsou řešeny. Asi by to stálo za úvahu. Já osobně bych výjimku povolil, tak jak výjimky v destruktorech povoluji ve všech svých projektech... za předpokladu správného používání funkce std::uncaught_ex­ception(). Je tam ale předpoklad, že i v případě výjimky v destruktoru je objekt považován za uklizený, a výjimka jen informuje o nastalé chybě během úklidu. Potom lze výjimku "zahodit", když vznikne během úklidu kvůli jiné výjimce, a z toho důvodu se ten test rozděluje podle výsledku funkce std::uncaught_ex­ception()

    ~dtor() try {
    //uklid
    } catch (...) {
    if (std::uncaught_ex­ception()) return; //viz norma C++, výjimky v destruktorech
    }