Титульная страница   Пространства имен   Иерархия классов   Алфавитный указатель   Классы   Файлы   Члены пространства имен   Члены классов   Члены файла  

Файл cexception.hpp

Определения базовых исключений, используемых в проекте. Подробнее...

#include <string>
#include "config.hpp"
#include "sh_ptr.hpp"

См. исходные тексты.

Классы

class  CException
 Общий базовый класс для всех исключений проекта. Подробнее...

struct  CException::FileLine
 Структура для инкапсуляции информации о месте возникновения исключения. Подробнее...

class  ExternalCException
 Общий базовый класс для инкапсуляции исключений, являющихся внешними по отношению к иерархии, порождаемой CException. Подробнее...

class  STDExternalCException
 Исключение для инкапсуляции std::exception и классов, производных от него. Подробнее...

class  UnknownExternalCException
 Исключение для информирования о внешнем исключении, тип которого не удалось определить. Подробнее...


Макросы

#define _FLINE_   CException::FileLine(__FILE__, __LINE__)
 Макрос для упрощения создания объекта CException::FileLine.


Функции

sh_ptr< CExceptiontoCException (const CException::FileLine &location)
 Данная функция перевозбуждает текущее исключение и возвращает созданный по нему sh_ptr<CException>.

sh_ptr< CExceptionnewCException (const CException::FileLine &loc, const std::string &msg, sh_ptr< CException > nest)
sh_ptr< CExceptionnewExternalCException (const CException::FileLine &loc, const std::string &msg, const std::string &tname, sh_ptr< CException > nest)
sh_ptr< CExceptionnewSTDExternalCException (const CException::FileLine &loc, const std::string &msg, const std::string &tname, sh_ptr< CException > nest)
sh_ptr< CExceptionnewUnknownExternalCException (const CException::FileLine &loc, const std::string &msg, const std::string &tname, sh_ptr< CException > nest)


Подробное описание

Определения базовых исключений, используемых в проекте.

См. определение в файле cexception.hpp


Макросы

#define _FLINE_   CException::FileLine(__FILE__, __LINE__)
 

Макрос для упрощения создания объекта CException::FileLine.

См. определение в файле cexception.hpp строка 278

Используется в FindFileImpl::find(), FindTextImpl::found(), Logger::Logger(), Factory::newFindFile(), Factory::newFindText(), Factory::newNameMatcher(), Factory::newTextFinder(), FindTextImpl::search() и FindTextImpl::stopSearch().


Функции

sh_ptr<CException> newCException const CException::FileLine loc,
const std::string &  msg,
sh_ptr< CException nest = sh_ptr<CException>()
[inline]
 

Создает объект в свободной памяти по переданным месту исключения, сообщению и, возможно, вложенному исключению. Для передачи объекта loc удобно использовать макрос _FLINE_.

См. определение в файле cexception.hpp строка 281

Используется в FindFileImpl::find(), FindTextImpl::found(), Logger::Logger(), Factory::newFindFile(), Factory::newFindText(), Factory::newNameMatcher(), Factory::newTextFinder(), FindTextImpl::search() и FindTextImpl::stopSearch().

00283 {
00284  return sh_ptr<CException>(new CException(loc, msg, nest));
00285 }

sh_ptr<CException> toCException const CException::FileLine location  ) 
 

Данная функция перевозбуждает текущее исключение и возвращает созданный по нему sh_ptr<CException>.

Она может быть вызвана только из блока catch. Для передачи объекта location удобно использовать макрос _FLINE_. Если используемая платформа предоставляет дополнительные (нестандартные) возможности для получения более подробной информации о перехваченных исключениях неизвестного типа, то имеет смысл написать специальную реализацию данной функции, использующую эти возможности.

См. определение в файле cexception.cpp строка 106

Используется в FindFileImpl::find(), FindTextImpl::found(), Factory::newFindFile(), Factory::newFindText(), Factory::newNameMatcher(), Factory::newTextFinder() и FindTextImpl::search().

00107 {
00108 #ifndef DERS_RETHROW_BUG  // нормальная версия
00109  try { throw; }
00110  catch (sh_ptr<CException> ce) {
00111        return ce;
00112  }
00113  catch (const exception& e) {
00114        return newSTDExternalCException(location, e.what(), typeid(e).name());
00115  }
00116  catch (...) {
00117        return newUnknownExternalCException(location, "Unknown exception",
00118          "unknown");
00119  }
00120 #else  // версия для компиляторов с ошибками
00121  if (CException::current.refs()>1 && CException::current.get())
00122     return CException::current;
00123 
00124  return newUnknownExternalCException(location, "Unknown exception", "unknown");
00125 #endif
00126 }


Документация по ftext. Последние изменения: Sat Mar 20 17:58:15 2004. Создано системой doxygen1.3