eao197,
e> издания Страуструпа поигрался немного со спецификациями исключений и
e> решил, что лучше с ними не связываться. Особенно с throw(). Иногда
e> использовал throw(std::exception) чтобы показать, что я сам в этих
e> функциях генерирую исключения, но потом и от этого отказался.
Мне вполне нравится, когда спецификации исключений указаны. Но не в коде, а в комментариях.
void f(); // throw()
void g(); // throw(MyException)
Плюс, пустая спецификация (throw()) еще может оказаться полезной некоторым компиляторам (vc, gcc...) для
оптимизации. Периодически для последнего вводят какое-нибудь расширение. Также не менее полезным
оказывается антоним -- спецификация, указывающая, что функция не возвращает управление.
template< class E >
void throw_(); // always throws E
Соответственно, для этих случаев можно завести макросы, от которых, кроме комментирования, еще
и польза будет:
void f() NOTHROW;
template< class E >
void throw_() NORETURN;
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен