#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< CException > | toCException (const CException::FileLine &location) |
| Данная функция перевозбуждает текущее исключение и возвращает созданный по нему sh_ptr<CException>. | |
| sh_ptr< CException > | newCException (const CException::FileLine &loc, const std::string &msg, sh_ptr< CException > nest) |
| sh_ptr< CException > | newExternalCException (const CException::FileLine &loc, const std::string &msg, const std::string &tname, sh_ptr< CException > nest) |
| sh_ptr< CException > | newSTDExternalCException (const CException::FileLine &loc, const std::string &msg, const std::string &tname, sh_ptr< CException > nest) |
| sh_ptr< CException > | newUnknownExternalCException (const CException::FileLine &loc, const std::string &msg, const std::string &tname, sh_ptr< CException > nest) |
См. определение в файле cexception.hpp
|
|
Макрос для упрощения создания объекта CException::FileLine.
См. определение в файле cexception.hpp строка 278 Используется в FindFileImpl::find(), FindTextImpl::found(), Logger::Logger(), Factory::newFindFile(), Factory::newFindText(), Factory::newNameMatcher(), Factory::newTextFinder(), FindTextImpl::search() и FindTextImpl::stopSearch(). |
|
||||||||||||||||
|
Создает объект в свободной памяти по переданным месту исключения, сообщению и, возможно, вложенному исключению. Для передачи объекта 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>. Она может быть вызвана только из блока 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 }
|
1.3