#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(). |
1.3