• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1[/
2  Copyright 2004 Pavel Vozenilek
3  Copyright 2014 Peter Dimov
4
5  Distributed under the Boost Software License, Version 1.0.
6
7  See accompanying file LICENSE_1_0.txt
8  or copy at http://boost.org/LICENSE_1_0.txt
9]
10
11[section:no_exceptions_support no_exceptions_support]
12
13[simplesect Authors]
14
15* Pavel Vozenilek
16
17[endsimplesect]
18
19[section Header <boost/core/no_exceptions_support.hpp>]
20
21The header `<boost/core/no_exceptions_support.hpp>` defines
22macros for use in code that needs to be portable to environments
23that do not have support for C++ exceptions.
24
25[section Synopsis]
26
27``
28#define BOOST_TRY /*unspecified*/
29#define BOOST_CATCH(x) /*unspecified*/
30#define BOOST_CATCH_END /*unspecified*/
31#define BOOST_RETHROW /*unspecified*/
32``
33
34[endsect]
35
36[section Example Use]
37
38``
39void foo() {
40  BOOST_TRY {
41    ...
42  } BOOST_CATCH(const std::bad_alloc&) {
43      ...
44      BOOST_RETHROW
45  } BOOST_CATCH(const std::exception& e) {
46      ...
47  }
48  BOOST_CATCH_END
49}
50``
51
52With exception support enabled it will expand into:
53
54``
55void foo() {
56  { try {
57    ...
58  } catch (const std::bad_alloc&) {
59      ...
60      throw;
61  } catch (const std::exception& e) {
62      ...
63  }
64  }
65}
66``
67
68With exception support disabled it will expand into:
69
70``
71void foo() {
72  { if(true) {
73    ...
74  } else if (false) {
75      ...
76  } else if (false)  {
77      ...
78  }
79  }
80}
81``
82
83[endsect]
84
85[endsect]
86
87[endsect]
88