1 <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML
1.0 Strict//EN'
2 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
>
3 <html xmlns='http://www.w3.org/
1999/xhtml' xml:lang='en' lang='en'
>
5 <meta http-equiv='Content-Type' content='text/html; charset=utf-
8'
/>
6 <title>diagnostic_information
</title>
7 <link href='reno.css' type='text/css' rel='stylesheet'
/>
15 <a href=
"http://www.boost.org"><img style=
"border:0" src=
"../../../boost.png" alt=
"Boost" width=
"277" height=
"86"/></a>
17 <h1>Boost Exception
</h1>
19 <!-- Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. -->
20 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
21 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
22 <div class=
"RenoIncludeDIV"><div class=
"RenoAutoDIV"><h3>diagnostic_information
</h3>
24 <div class=
"RenoIncludeDIV"><p><span class=
"RenoEscape">#<!--<wiki>`#</wiki>--></span>include
<<span class=
"RenoLink"><a href=
"boost_exception_diagnostic_information_hpp.html">boost/exception/diagnostic_information.hpp
</a></span>><span class=
"RenoBR"> </span><br/><span class=
"RenoEscape">#<!--<wiki>`#</wiki>--></span>include
<<span class=
"RenoLink"><a href=
"boost_exception_ptr_hpp.html">boost/exception_ptr.hpp
</a></span>><span class=
"RenoBR"> </span><br/></p>
28 <span class=
"RenoIncludeSPAN"> template
<class E
>
29 std::string
<span class=
"RenoLink">diagnostic_information
</span>( E const
& e, bool verbose=true );
31 std::string
<span class=
"RenoLink">diagnostic_information
</span>(
<span class=
"RenoLink"><a href=
"exception_ptr.html">exception_ptr
</a></span> const
& p, bool verbose=true );
</span>
33 </div><h4>Returns:
</h4>
34 <p>A string value that contains varying amount of diagnostic information about the passed object:
</p>
35 <div><ul><li> If E can be statically converted to either boost::
<span class=
"RenoLink"><a href=
"exception.html">exception
</a></span> or to std::exception, dynamic_cast is used to access both the boost::
<span class=
"RenoLink"><a href=
"exception.html">exception
</a></span> and std::exception subobjects of e; otherwise, the boost::
<span class=
"RenoLink">diagnostic_information
</span> template is not available.
</li>
36 <li> The returned value contains the string representations of all
<span class=
"RenoLink"><a href=
"error_info.html">error_info
</a></span> objects stored in the boost::
<span class=
"RenoLink"><a href=
"exception.html">exception
</a></span> subobject through
<span class=
"RenoLink"><a href=
"exception_operator_shl.html">operator
<<</a></span>.
</li>
37 <li> In addition, if verbose is true, it contains other diagnostic information relevant to the exception, including the string returned by std::exception::what().
</li>
39 <p>The string representation of each
<span class=
"RenoLink"><a href=
"error_info.html">error_info
</a></span> object is deduced by an unqualified call to to_string(x), where x is of type
<span class=
"RenoLink"><a href=
"error_info.html">error_info
</a></span><Tag,T
>, for which Boost Exception defines a generic overload. It converts x.
<span class=
"RenoLink"><a href=
"error_info_value.html">value
</a></span>() to string, attempting to bind (at the time the
<span class=
"RenoLink"><a href=
"error_info.html">error_info
</a></span><Tag,T
> template is instantiated) the following functions in order:
</p>
40 <div><ol><li>Unqualified call to to_string(x.
<span class=
"RenoLink"><a href=
"error_info_value.html">value
</a></span>()) (the return value is expected to be of type std::string.)
</li>
41 <li>Unqualified call to s
<< x.
<span class=
"RenoLink"><a href=
"error_info_value.html">value
</a></span>(), where s is a std::ostringstream.
</li>
43 <p>The first successfully bound function is used at the time
<span class=
"RenoLink">diagnostic_information
</span> is called; if both overload resolutions are unsuccessful, the system is unable to convert the
<span class=
"RenoLink"><a href=
"error_info.html">error_info
</a></span> object to string, and
<i>an unspecified stub string value is used without issuing a compile error.
</i></p>
44 <p>The
<span class=
"RenoLink"><a href=
"exception_ptr.html">exception_ptr
</a></span> overload of
<span class=
"RenoLink">diagnostic_information
</span> is equivalent to:
</p>
48 <span class=
"RenoLink"><a href=
"rethrow_exception.html">rethrow_exception
</a></span>(p);
52 return
<span class=
"RenoLink"><a href=
"current_exception_diagnostic_information.html">current_exception_diagnostic_information
</a></span>(verbose);
54 else return
<unspecified-string-value
>;
</pre>
55 <div class=
"RenoIncludeDIV"><h4>Example:
</h4>
56 <p>this is a possible output from the
<span class=
"RenoLink">diagnostic_information
</span> function, as used in
<i>libs/exception/example/example_io.cpp:
</i></p>
57 <pre>example_io.cpp(
70): Throw in function class boost::shared_ptr
<struct _iobuf
> __cdecl my_fopen(const char *,const char *)
58 Dynamic exception type: class boost::exception_detail::clone_impl
<struct fopen_error
>
59 std::exception::what: example_io error
60 [struct boost::
<span class=
"RenoLink"><a href=
"errinfo_api_function.html">errinfo_api_function
</a></span>_ *] = fopen
61 [struct boost::
<span class=
"RenoLink"><a href=
"errinfo_errno.html">errinfo_errno
</a></span>_ *] =
2,
"No such file or directory"
62 [struct boost::
<span class=
"RenoLink"><a href=
"errinfo_file_name.html">errinfo_file_name
</a></span>_ *] = tmp1.txt
63 [struct boost::
<span class=
"RenoLink"><a href=
"errinfo_file_open_mode.html">errinfo_file_open_mode
</a></span>_ *] = rb
</pre>
64 </div></div><div class=
"RenoAutoDIV"><div class=
"RenoHR"><hr/></div>
65 See also:
<span class=
"RenoPageList"><a href=
"BOOST_THROW_EXCEPTION.html">BOOST_THROW_EXCEPTION
</a> |
<a href=
"boost-exception.html">Boost Exception
</a> |
<a href=
"boost_exception_diagnostic_information_hpp.html">boost/exception/diagnostic_information.hpp
</a> |
<a href=
"configuration_macros.html">Configuration Macros
</a> |
<a href=
"current_exception_diagnostic_information.html">current_exception_diagnostic_information
</a> |
<a href=
"tutorial_diagnostic_information.html">Diagnostic Information
</a> |
<a href=
"diagnostic_information_what.html">diagnostic_information_what
</a> |
<a href=
"frequently_asked_questions.html">Frequently Asked Questions
</a> |
<a href=
"motivation.html">Motivation
</a></span>
67 <!-- Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. -->
68 <!-- Distributed under the Boost Software License, Version 1.0. (See accompanying -->
69 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
72 <a class=
"logo" href=
"http://jigsaw.w3.org/css-validator/check/referer"><img class=
"logo_pic" src=
"valid-css.png" alt=
"Valid CSS" height=
"31" width=
"88"/></a>
73 <a class=
"logo" href=
"http://validator.w3.org/check?uri=referer"><img class=
"logo_pic" src=
"valid-xhtml.png" alt=
"Valid XHTML 1.0" height=
"31" width=
"88"/></a>
74 <small>Copyright (c)
2006-
2009 by Emil Dotchevski and Reverge Studios, Inc.
<br/>
75 Distributed under the
<a href=
"http://www.boost.org/LICENSE_1_0.txt">Boost Software License, Version
1.0</a>.
</small>