Diagnostic Information
Boost Exception предоставляет функцию пространства именДиагностика_информация, который принимает ускорение:исключение. Возвращенная строка содержит:
- струнное представление всех объектов данных, добавленных к импульсу:исключениечерезоператор<<;
- ссылка на сайт: исключение: что?
- дополнительная диагностическая информация для конкретной платформы.
Возвращенная строка не может быть представлена как удобное пользовательское сообщение, но поскольку она генерируется автоматически, она полезна для отладки или регистрации. Вот пример:
#include <boost/exception/all.hpp>
#include <iostream>
void f(); //throws unknown types that derive from boost::exception.
void
g()
{
try
{
f();
}
catch(
boost::exception & e )
{
std::cerr << diagnostic_information(e);
}
}
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