...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
#include <boost/phoenix/statement/throw.hpp>
As a natural companion to the try/catch support, the statement module provides lazy throwing and re-throwing of exceptions.
The syntax to throw an exception is:
throw_(exception_expression)
The syntax to re-throw an exception is:
throw_()
Example: This code extends the try/catch example, re-throwing exceptions derived from runtime_error or exception, and translating other exception types to runtime_errors.
try_ [ f(arg1) ] .catch_<runtime_error>() [ cout << val("caught runtime error or derived\n"), throw_() ] .catch_<exception>() [ cout << val("caught exception or derived\n"), throw_() ] .catch_all [ cout << val("caught some other type of exception\n"), throw_(runtime_error("translated exception")) ]