diagnostic_information
Returns:
Значение строки, содержащее различное количество диагностической информации о пройденном объекте:
- Если E может быть статически преобразован в любой импульс:Исключениеили для std:: Исключение, dynamic_cast используется для доступа к обоим импульсам:Исключениеи std:: исключительные подобъекты e; в противном случае повышение::диагностические_информацияШаблон отсутствует.
- Возвращенное значение содержит струнные представления всехerror_infoобъектов, хранящихся в бустере::исключениеподобъект черезоператор<<.
- Кроме того, если глагола верна, она содержит другую диагностическую информацию, относящуюся к исключению, включая строку, возвращаемую std:: Исключение:: What().
Представление строки каждого объектаerror_infoвыводится неквалифицированным вызовом к_string(x), где x имеет типerror_info, для которого Boost Exception определяет общую перегрузку. Преобразует x.значение() в строку, пытаясь связать (в то время какошибка_инфошаблон инстанцируется) следующие функции в порядке:
- Неквалифицированный вызов к_струне (x.значение()) (возвратное значение, как ожидается, будет типа std::string).
- Неквалифицированный вызов на 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