#include <boost/phoenix/statement/throw.hpp>
В качестве естественного компаньона для поддержки проб / лова модуль заявления обеспечивает ленивое бросание и повторное бросание исключений.
Синтаксис, чтобы бросить исключение:
throw_(exception_expression)
Синтаксис для повторного сброса исключения:
throw_()
Пример: Этот код расширяет пример пробы/ловли, перебрасывая исключения, полученные из ошибки Runtime_error или исключения, и переводя другие типы исключений на ошибки 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"))
]