Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

diagnostic_information

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost Exception

diagnostic_information

#включает<boost/ Exception_ptr.hpp> 
include <boost/exception/diagnostic_information.hpp> 
#include <boost/exception_ptr.hpp> 
[ORIG_END] -->

namespace
boost
    {
    template <class E>
    std::string diagnostic_information( E const & e, bool verbose=true );
    
    std::string diagnostic_information( exception_ptr const & p, bool verbose=true );
    }

Returns:

Значение строки, содержащее различное количество диагностической информации о пройденном объекте:

  • Если E может быть статически преобразован в любой импульс:Исключениеили для std:: Исключение, dynamic_cast используется для доступа к обоим импульсам:Исключениеи std:: исключительные подобъекты e; в противном случае повышение::диагностические_информацияШаблон отсутствует.
  • Возвращенное значение содержит струнные представления всехerror_infoобъектов, хранящихся в бустере::исключениеподобъект черезоператор<<.
  • Кроме того, если глагола верна, она содержит другую диагностическую информацию, относящуюся к исключению, включая строку, возвращаемую std:: Исключение:: What().

Представление строки каждого объектаerror_infoвыводится неквалифицированным вызовом к_string(x), где x имеет типerror_info, для которого Boost Exception определяет общую перегрузку. Преобразует x.значение() в строку, пытаясь связать (в то время какошибка_инфошаблон инстанцируется) следующие функции в порядке:

  1. Неквалифицированный вызов к_струне (x.значение()) (возвратное значение, как ожидается, будет типа std::string).
  2. Неквалифицированный вызов на s<< x.значение(), где s — std::ostringstream.

Первая успешно связанная функция используется в момент вызоваdiagnostic_information; если оба разрешения перегрузки не увенчались успехом, система не может преобразовать объектerror_infoв строку, аиспользуется неопределенное значение строки stub без выдачи ошибки компиляции.

Исключение_ptrПерегрузкадиагностической_информацииэквивалентна:

if( p )
    try
        {
        rethrow_exception(p);
        }
    catch(...)
        {
        return current_exception_diagnostic_information(verbose);
        }
else return <unspecified-string-value>;

Example:

Это возможный выход из функцииdiagnostic_information, используемой вlibs/ Exception/example/example_io.cpp:

example_io.cpp(70): Throw in function class boost::shared_ptr<struct _iobuf> __cdecl my_fopen(const char *,const char *)
Dynamic exception type: class boost::exception_detail::clone_impl<struct fopen_error>
std::exception::what: example_io error
[struct boost::errinfo_api_function_ *] = fopen
[struct boost::errinfo_errno_ *] = 2, "No such file or directory"
[struct boost::errinfo_file_name_ *] = tmp1.txt
[struct boost::errinfo_file_open_mode_ *] = rb

Статья diagnostic_information раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:53:30/0.0083889961242676/1