diff options
Diffstat (limited to 'include/qpdf/QPDFExc.hh')
-rw-r--r-- | include/qpdf/QPDFExc.hh | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/include/qpdf/QPDFExc.hh b/include/qpdf/QPDFExc.hh index d9a61bf3..6b9a11e4 100644 --- a/include/qpdf/QPDFExc.hh +++ b/include/qpdf/QPDFExc.hh @@ -9,15 +9,47 @@ #define __QPDFEXC_HH__ #include <qpdf/DLL.h> +#include <qpdf/Constants.h> #include <stdexcept> +#include <stddef.h> class DLL_EXPORT QPDFExc: public std::runtime_error { public: - QPDFExc(std::string const& message); - QPDFExc(std::string const& filename, int offset, + QPDFExc(qpdf_error_code_e error_code, + std::string const& filename, + std::string const& object, + off_t offset, std::string const& message); virtual ~QPDFExc() throw (); + + // To get a complete error string, call what(), provided by + // std::exception. The accessors below return the original values + // used to create the exception. Only the error code and message + // are guaranteed to have non-zero/empty values. + + // There is no lookup code that maps numeric error codes into + // strings. The numeric error code is just another way to get at + // the underlying issue, but it is more programmer-friendly than + // trying to parse a string that is subject to change. + + qpdf_error_code_e getErrorCode() const; + std::string const& getFilename() const; + std::string const& getObject() const; + off_t getOffset() const; + std::string const& getMessage() const; + + private: + static std::string createWhat(std::string const& filename, + std::string const& object, + off_t offset, + std::string const& message); + + qpdf_error_code_e error_code; + std::string filename; + std::string object; + off_t offset; + std::string message; }; #endif // __QPDFEXC_HH__ |