#include <cexception.hpp>
Граф наследования:CException:
Открытые члены | |
virtual | ~CException () |
Виртуальный деструктор. | |
virtual std::string | getClassName () const |
Возвращает имя класса-исключения. | |
virtual std::string | toString () const |
Возвращает "полное описание" исключения, включающее имя класса и место возникновения. | |
std::string | toStringAll () const |
Возвращает "полное описание" текущего исключения и всех исключений, вложенных в него. | |
template<class E> E * | is () |
Удобная функция для проверки является ли текущее исключение исключением класса E (или производным от него). | |
template<class E> const E * | is () const |
Удобная функция для проверки является ли текущее константное исключение исключением класса E (или производным от него). | |
void * | operator new (size_t size) |
Переопределенный для ускорения работы распределитель памяти. | |
void | operator delete (void *ptr, size_t size) |
Переопределенный для ускорения работы распределитель памяти. | |
Открытые атрибуты | |
const FileLine | location |
место возникновения исключения. | |
const std::string | message |
сообщение | |
const sh_ptr< CException > | nested |
указатель на вложенное исключение, причину текущего, или 0 | |
Защищенные члены | |
CException (const FileLine &loc, const std::string &msg, sh_ptr< CException > nest) | |
Защищенный конструктор. | |
Закрытые члены | |
CException (const CException &) | |
запрещаем копирование. | |
CException & | operator= (const CException &) |
запрещаем присваивание. | |
Друзья | |
sh_ptr< CException > | newCException (const FileLine &loc, const std::string &msg, sh_ptr< CException > nest=sh_ptr< CException >()) |
Предназначена для создания объектов вместо конструктора. |
Все исключения должны возбуждаться в виде sh_ptr<CException>, который содержит указатель на собственно исключение, производное от CException. В принципе, отдельный производный класс исключений стоит создавать только в том случае, когда у пользователя должна быть возможность отличить его от "просто CException", а в остальный случаях вполне подойдет и сам CException, означающий: "обнаружена общего вида ошибка со следующим описанием".
См. определение в файле cexception.hpp строка 31
|
запрещаем копирование.
|
|
Защищенный конструктор. Для создания объектов необходимо использовать функцию newCException(). См. определение в файле cexception.cpp строка 22
|
|
Виртуальный деструктор.
См. определение в файле cexception.cpp строка 27
00028 { 00029 } |
|
Возвращает имя класса-исключения. Должна обязательно переопределяться в производных классах. Переопределяется в ExampleCException, ExternalCException, STDExternalCException и UnknownExternalCException. См. определение в файле cexception.cpp строка 31 Используется в toString().
00032 { 00033 return "CException"; 00034 } |
|
Удобная функция для проверки является ли текущее константное исключение исключением класса E (или производным от него). Возвращает ненулевой указатель запрашиваемого типа в случае положительного ответа. См. определение в файле cexception.hpp строка 123
00123 { return dynamic_cast<const E*>(this); }
|
|
Удобная функция для проверки является ли текущее исключение исключением класса E (или производным от него). Возвращает ненулевой указатель запрашиваемого типа в случае положительного ответа. См. определение в файле cexception.hpp строка 115
00115 { return dynamic_cast<E*>(this); }
|
|
Переопределенный для ускорения работы распределитель памяти. Корректно работает и с производными классами. См. определение в файле cexception.hpp строка 138 Перекрестные ссылки sized_alloc::free().
00139 { 00140 sized_alloc::free(ptr, size); 00141 } |
|
Переопределенный для ускорения работы распределитель памяти. Корректно работает и с производными классами. См. определение в файле cexception.hpp строка 129 Перекрестные ссылки sized_alloc::alloc().
00130 { 00131 return sized_alloc::alloc(size); 00132 } |
|
запрещаем присваивание.
|
|
Возвращает "полное описание" исключения, включающее имя класса и место возникновения. Должна переопределяться производными классами, имеющими дополнительные данные. Переопределяется в ExternalCException. См. определение в файле cexception.cpp строка 36 Перекрестные ссылки CException::FileLine::fname, getClassName(), CException::FileLine::line, location и message. Используется в toStringAll().
|
|
Возвращает "полное описание" текущего исключения и всех исключений, вложенных в него. Фактически, результаты применения toString() к каждому из исключений объединяются в одну строку. См. определение в файле cexception.cpp строка 42 Перекрестные ссылки sh_ptr< CException >::get(), nested и toString().
00043 { 00044 string ret; 00045 ret.reserve(1024); 00046 00047 for (const CException* ptr=this; ptr; ptr=ptr->nested.get()) { 00048 ret.append(ptr->toString()); 00049 ret.push_back('\n'); 00050 } 00051 00052 return ret; 00053 } |
|
Предназначена для создания объектов вместо конструктора. Создает объект в свободной памяти по переданным месту исключения, сообщению и, возможно, вложенному исключению. Для передачи объекта loc удобно использовать макрос _FLINE_. См. определение в файле cexception.hpp строка 281
00283 { 00284 return sh_ptr<CException>(new CException(loc, msg, nest)); 00285 } |
|
место возникновения исключения.
См. определение в файле cexception.hpp строка 69 Используется в ExternalCException::toString() и toString(). |
|
сообщение
См. определение в файле cexception.hpp строка 71 Используется в ExternalCException::toString() и toString(). |
|
указатель на вложенное исключение, причину текущего, или 0
См. определение в файле cexception.hpp строка 73 Используется в toStringAll(). |