Exception Handling

exceptions.jpgIBPP reports errors exclusively through C++ exceptions. Return values of methods calls are never used to return success or failure. All exceptions classes thrown by IBPP derive from the std::exception class and re-implement their virtual method const char* what(), making it easy to handle those either globally of through dedicated catch handlers.

Exceptions Classes


class Exception : public std::exception
    virtual const char* Origin() const throw() = 0;
    virtual const char* what() const throw() = 0;
    virtual ~Exception() throw();

This is the base class of all exceptions thrown by IBPP. It directly derives from std::exception and only adds one Origin() method to the standard interface.

Origin() is a string, specific to IBPP, which identifies which part of the IBPP source code thrown the exception. This is mostly useful for debugging and of low interest to the end-users of application programs using IBPP.


class LogicException : public Exception
    virtual ~LogicException() throw();

IBPP::LogicException brings nothing new to the interface of IBPP::Exception. It is only meant to distinguish, by name, between exceptions which are inherent to IBPP itself from those (IBPP::SQLException) which are thrown when the database engine reports operational errors.


class SQLException : public Exception
    virtual int SqlCode() const throw() = 0;
    virtual int EngineCode() const throw() = 0;

    virtual ~SQLException() throw();

IBPP::SQLException reports errors returned by the database engine itself. IBPP::SQLException adds two specific members to the generic IBPP::Exception interface.

SqlCode() returns the eventual standard SQL error code. EngineCode() returns the internal engine error code.

You should read some more documentation on Firebird to get all the details and the differences between those two values and how you can make use of them.


class WrongType : public LogicException
    virtual ~WrongType() throw();

IBPP::WrongType is a specialization of IBPP::LogicException which brings nothing new to the interface of LogicException. It is only meant to distinguish (by the exception name) some specific kind of LogicException.

reference/exceptions.txt · Last modified: 2006/05/28 11:11 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki