#include <boost/phoenix/statement/try_catch.hpp>
Синтаксис это:
try_
[
sequenced_statements
]
.catch_<exception_type>()
[
sequenced_statements
]
.catch_<another_exception_type>(local-id)
[
sequenced_statements
]
...
.catch_all
[
sequenced_statement
]
Обратите внимание на обычное подчеркивание после попытки поймать и дополнительные скобки, необходимые после улова.
Вторая форма улова может относиться к брошенному исключению с использованием указанного локального идентификатора, который являетсялокальными переменными, в последовательном_заявлении.
Пример: Следующий код вызывает (ленивую) функцию<f
>для каждого элемента и печатает сообщения о различных типах исключений, которые он ловит.
try_
[
f(arg1)
]
.catch_<runtime_error>()
[
cout << val("caught runtime error or derived\n")
]
.catch_<exception>(e_)
[
cout << val("caught exception or derived: ") << bind(&exception::what, e_) << val("\n")
]
.catch_all
[
cout << val("caught some other type of exception\n")
]