]>
Commit | Line | Data |
---|---|---|
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'> | |
4 | <head> | |
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'/> | |
8 | </head> | |
9 | <body> | |
10 | <div class="body-0"> | |
11 | <div class="body-1"> | |
12 | <div class="body-2"> | |
13 | <div> | |
14 | <div id="boost_logo"> | |
15 | <a href="http://www.boost.org"><img style="border:0" src="../../../boost.png" alt="Boost" width="277" height="86"/></a> | |
16 | </div> | |
17 | <h1>Boost Exception</h1> | |
18 | </div> | |
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> | |
23 | </div> | |
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> | |
25 | <pre>namespace | |
26 | boost | |
27 | { | |
28 | <span class="RenoIncludeSPAN"> template <class E> | |
29 | std::string <span class="RenoLink">diagnostic_information</span>( E const & e, bool verbose=true ); | |
30 | ||
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> | |
32 | }</pre> | |
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> | |
38 | </ul></div> | |
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> | |
42 | </ol></div> | |
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> | |
45 | <pre>if( p ) | |
46 | try | |
47 | { | |
48 | <span class="RenoLink"><a href="rethrow_exception.html">rethrow_exception</a></span>(p); | |
49 | } | |
50 | catch(...) | |
51 | { | |
52 | return <span class="RenoLink"><a href="current_exception_diagnostic_information.html">current_exception_diagnostic_information</a></span>(verbose); | |
53 | } | |
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> | |
66 | </div> | |
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) --> | |
70 | <div id="footer"> | |
71 | <p> | |
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> | |
76 | </p> | |
77 | </div> | |
78 | </div> | |
79 | </div> | |
80 | </div> | |
81 | </body> | |
82 | </html> |