C++ 3d.Комментарии




Проверка спецификаций исключений - часть 2


// ключевое слово nothrow отсутствует: // f() разрешено возбуждать любые исключения прямо или косвенно void f() { // ... }

// f() запрещено возбуждать любые исключения прямо или косвенно, // проверяется на этапе компиляции void f() nothrow

{ // ... }

void f() {

// здесь можно возбуждать исключения прямо или косвенно

nothrow { // nothrow-блок

// код, находящийся в данном блоке никаких исключений возбуждать // не должен, проверяется на этапе компиляции

}

// здесь снова можно возбуждать исключения

}

Еще одним неудачным решением является возможность возбуждать исключения любых (даже встроенных!) типов. Правильным решением является введение специального базового класса для всех возбуждаемых исключений с изначально заложенной в нем специфической функциональностью.




Содержание  Назад  Вперед