3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>try_ catch_ Statement
</title>
5 <link rel=
"stylesheet" href=
"../../../../../../../doc/src/boostbook.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.75.2">
7 <link rel=
"home" href=
"../../../index.html" title=
"Chapter 1. Phoenix 3.2.0">
8 <link rel=
"up" href=
"../statement.html" title=
"Statement">
9 <link rel=
"prev" href=
"for_statement.html" title=
"for_ Statement">
10 <link rel=
"next" href=
"throw_.html" title=
"throw_">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"for_statement.html"><img src=
"../../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../statement.html"><img src=
"../../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../../index.html"><img src=
"../../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"throw_.html"><img src=
"../../../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h4 class=
"title">
27 <a name=
"phoenix.modules.statement.try__catch__statement"></a><a class=
"link" href=
"try__catch__statement.html" title=
"try_ catch_ Statement">try_
29 </h4></div></div></div>
30 <pre class=
"programlisting"><span class=
"preprocessor">#include
</span> <span class=
"special"><</span><span class=
"identifier">boost
</span><span class=
"special">/
</span><span class=
"identifier">phoenix
</span><span class=
"special">/
</span><span class=
"identifier">statement
</span><span class=
"special">/
</span><span class=
"identifier">try_catch
</span><span class=
"special">.
</span><span class=
"identifier">hpp
</span><span class=
"special">></span>
35 <pre class=
"programlisting"><span class=
"identifier">try_
</span>
36 <span class=
"special">[
</span>
37 <span class=
"identifier">sequenced_statements
</span>
38 <span class=
"special">]
</span>
39 <span class=
"special">.
</span><span class=
"identifier">catch_
</span><span class=
"special"><</span><span class=
"identifier">exception_type
</span><span class=
"special">>()
</span>
40 <span class=
"special">[
</span>
41 <span class=
"identifier">sequenced_statements
</span>
42 <span class=
"special">]
</span>
43 <span class=
"special">.
</span><span class=
"identifier">catch_
</span><span class=
"special"><</span><span class=
"identifier">another_exception_type
</span><span class=
"special">>(
</span><span class=
"identifier">local
</span><span class=
"special">-
</span><span class=
"identifier">id
</span><span class=
"special">)
</span>
44 <span class=
"special">[
</span>
45 <span class=
"identifier">sequenced_statements
</span>
46 <span class=
"special">]
</span>
47 <span class=
"special">...
</span>
48 <span class=
"special">.
</span><span class=
"identifier">catch_all
</span>
49 <span class=
"special">[
</span>
50 <span class=
"identifier">sequenced_statement
</span>
51 <span class=
"special">]
</span>
54 Note the usual underscore after try and catch, and the extra parentheses
55 required after the catch.
58 The second form of catch statement can refer thrown exception using specified
59 local-id, which is
<a class=
"link" href=
"../scope/local_variables.html" title=
"Local Variables">Local
60 Variables
</a>, in sequenced_statements.
63 Example: The following code calls the (lazy) function
<code class=
"computeroutput"><span class=
"identifier">f
</span></code>
64 for each element, and prints messages about different exception types it
67 <pre class=
"programlisting"><span class=
"identifier">try_
</span>
68 <span class=
"special">[
</span>
69 <span class=
"identifier">f
</span><span class=
"special">(
</span><span class=
"identifier">arg1
</span><span class=
"special">)
</span>
70 <span class=
"special">]
</span>
71 <span class=
"special">.
</span><span class=
"identifier">catch_
</span><span class=
"special"><</span><span class=
"identifier">runtime_error
</span><span class=
"special">>()
</span>
72 <span class=
"special">[
</span>
73 <span class=
"identifier">cout
</span> <span class=
"special"><<</span> <span class=
"identifier">val
</span><span class=
"special">(
</span><span class=
"string">"caught runtime error or derived\n"</span><span class=
"special">)
</span>
74 <span class=
"special">]
</span>
75 <span class=
"special">.
</span><span class=
"identifier">catch_
</span><span class=
"special"><</span><span class=
"identifier">exception
</span><span class=
"special">>(
</span><span class=
"identifier">e_
</span><span class=
"special">)
</span>
76 <span class=
"special">[
</span>
77 <span class=
"identifier">cout
</span> <span class=
"special"><<</span> <span class=
"identifier">val
</span><span class=
"special">(
</span><span class=
"string">"caught exception or derived: "</span><span class=
"special">)
</span> <span class=
"special"><<</span> <span class=
"identifier">bind
</span><span class=
"special">(
&</span><span class=
"identifier">exception
</span><span class=
"special">::
</span><span class=
"identifier">what
</span><span class=
"special">,
</span> <span class=
"identifier">e_
</span><span class=
"special">)
</span> <span class=
"special"><<</span> <span class=
"identifier">val
</span><span class=
"special">(
</span><span class=
"string">"\n"</span><span class=
"special">)
</span>
78 <span class=
"special">]
</span>
79 <span class=
"special">.
</span><span class=
"identifier">catch_all
</span>
80 <span class=
"special">[
</span>
81 <span class=
"identifier">cout
</span> <span class=
"special"><<</span> <span class=
"identifier">val
</span><span class=
"special">(
</span><span class=
"string">"caught some other type of exception\n"</span><span class=
"special">)
</span>
82 <span class=
"special">]
</span>
85 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
86 <td align=
"left"></td>
87 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2002-
2005,
2010,
2014,
2015 Joel de Guzman, Dan Marsden, Thomas
88 Heller, John Fletcher
<p>
89 Distributed under the Boost Software License, Version
1.0. (See accompanying
90 file LICENSE_1_0.txt or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt" target=
"_top">http://www.boost.org/LICENSE_1_0.txt
</a>)
95 <div class=
"spirit-nav">
96 <a accesskey=
"p" href=
"for_statement.html"><img src=
"../../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../statement.html"><img src=
"../../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../../index.html"><img src=
"../../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"throw_.html"><img src=
"../../../../../../../doc/src/images/next.png" alt=
"Next"></a>