
I thought I would share what I am using for exceptions given the excellent advice from everyone responding to my initial email. There is no usages of any memory allocation or std::string like variables. If there are any 'oops' or 'gotchas' please let me know. My plan is to use a command flag for taking into a value. The value will determine what debug messages are reported at the cause of the problem. The message will be displayed via std::cerr. Stephen ---------------- Header ---------------- #ifndef IO_EXCEPTION_H_ #define IO_EXCEPTION_H_ #include <exception> #include <inttypes.h> namespace kurt { /*! * \class IOException * \brief Rather than inheriting from ifstream this class delegates * any required functionality to it. * \date 2003 * \author Stephen Torri */ class IO_Exception : public virtual std::exception { public: IO_Exception (uint32_t message_id); /*! * \brief Destructor */ virtual ~IO_Exception (void) throw(){} /*! * \brief Return the extra message accompanying the exception. */ const char* what (void) const throw(); /*! * \brief Return tne name of the exception */ const char* name (void) const throw(); enum { CANNOT_OPEN, INPUT_CORRUPTED, INVALID_IO_OP, READ_ERROR, UNSUPPORTED_OP, WRITE_ERROR, }; private: static const char* m_exception_name; static const char* m_messages[]; uint32_t m_id; }; } /* namespace kurt */ ------------- Source ------------- #include "IOException.hpp" namespace kurt { const char* IO_Exception::m_exception_name = "IO_Exception"; const char* IO_Exception::m_messages [] = { "I/O Error: cannot open", // CANNOT_OPEN "Input data is corrupted", // INPUT_CORRUPTED "Invalid i/o operation attempted", // INVALID_IO_OP "Error reading input", // READ_ERROR "Unsupported I/O operation", // UNSUPPORTED_OP "Error writing output", // WRITE_ERROR }; IO_Exception::IO_Exception (uint32_t message_id) : std::exception(), m_id(message_id) {} const char* IO_Exception::what (void) const throw() { return m_messages[m_id]; } const char* IO_Exception::name (void) const throw() { return m_exception_name; } } /* namespace kurt */ #endif /* IO_EXCEPTION_H_ */ -- Email: storri@torri.org
participants (1)
-
Stephen torri