All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ExceptionSink Class Reference

container for holding Qore-language exception information and also for registering a "thread_exit" call More...

`#include <ExceptionSink.h>`

## Public Member Functions

DLLEXPORT | ExceptionSink ()
| creates an empty ExceptionSink object
DLLEXPORT | ~ExceptionSink ()
| calls ExceptionSink::defaultExceptionHandler() on all exceptions still present in the object and then deletes the exception list
DLLEXPORT void | assimilate (ExceptionSink *xs)
| assimilates all entries of the "xs" argument by appending them to the internal list and deletes the "xs" argument
DLLEXPORT void | assimilate (ExceptionSink &xs)
| assimilates all entries of the "xs" argument by appending them to the internal list and clears the "xs" argument
DLLEXPORT void | clear ()
| deletes the exception list immediately
DLLEXPORT const AbstractQoreNode * | getExceptionArg ()
| returns the argument of the top exception
DLLEXPORT const AbstractQoreNode * | getExceptionDesc ()
| returns the description of the top exception
DLLEXPORT const AbstractQoreNode * | getExceptionErr ()
| returns the error of the top exception
DLLEXPORT void | handleExceptions ()
| calls ExceptionSink::defaultExceptionHandler() on all exceptions still present in the object and then deletes the exception list
DLLEXPORT void | handleWarnings ()
| calls ExceptionSink::defaultWarningHandler() on all exceptions still present in the object and then deletes the exception list
DLLEXPORT bool | isEvent () const
| returns true if at least one exception is present or thread_exit has been triggered
DLLEXPORT bool | isException () const
| returns true if at least one exception is present
DLLEXPORT bool | isThreadExit () const
| returns true if thread_exit has been triggered
DLLEXPORT | operator bool () const
| returns true if at least one exception is present or thread_exit has been triggered More...
DLLEXPORT void | outOfMemory ()
| intended to be used to handle out of memory errors FIXME: not yet fully implemented
DLLEXPORT AbstractQoreNode * | raiseErrnoException (const char *err, int en, const char *fmt,...)
| appends a Qore-language exception to the list and appends the result of strerror(errno) to the description More...
DLLEXPORT AbstractQoreNode * | raiseErrnoException (const char *err, int en, QoreStringNode *desc)
| appends a Qore-language exception to the list and appends the result of strerror(errno) to the description More...
DLLEXPORT AbstractQoreNode * | raiseException (const char *err, const char *fmt,...)
| appends a Qore-language exception to the list More...
DLLEXPORT AbstractQoreNode * | raiseException (const char *err, QoreStringNode *desc)
| appends a Qore-language exception to the list; takes owenership of the "desc" argument reference More...
DLLEXPORT AbstractQoreNode * | raiseException (QoreStringNode *err, QoreStringNode *desc)
| appends a Qore-language exception to the list; takes owenership of the "desc" argument reference More...
DLLEXPORT AbstractQoreNode * | raiseExceptionArg (const char *err, AbstractQoreNode *arg, const char *fmt,...)
| appends a Qore-language exception to the list, and sets the 'arg' member (this object takes over the reference count of 'arg') More...
DLLEXPORT AbstractQoreNode * | raiseExceptionArg (const char *err, AbstractQoreNode *arg, QoreStringNode *desc)
| appends a Qore-language exception to the list, and sets the 'arg' member (this object takes over the reference counts of 'arg' and 'desc') More...
DLLEXPORT AbstractQoreNode * | raiseExceptionArg (const char *err, AbstractQoreNode *arg, QoreStringNode *desc, const QoreCallStack &stack)
| appends a Qore-language exception to the list, and sets the 'arg' member (this object takes over the reference counts of 'arg' and 'desc') More...
DLLEXPORT void | raiseThreadExit ()
| sets the "thread_exit" flag; will cause the current thread to terminate

## Detailed Description

container for holding Qore-language exception information and also for registering a "thread_exit" call

## Member Function Documentation

DLLEXPORT ExceptionSink::operator bool | ( |  | ) | const

returns true if at least one exception is present or thread_exit has been triggered

Intended as a alternative to isEvent()

ExceptionSink xsink;
if (xsink) { .. }

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseErrnoException | ( | const char * | err,
|  | int | en,
|  | const char * | fmt,
|  |  | ...
| ) |  |

appends a Qore-language exception to the list and appends the result of strerror(errno) to the description

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  en | the error number (normally "errno")
  fmt | the format string for the description for the exception

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseErrnoException | ( | const char * | err,
|  | int | en,
|  | QoreStringNode * | desc
| ) |  |

appends a Qore-language exception to the list and appends the result of strerror(errno) to the description

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  en | the error number (normally "errno")
  desc | the error description (the ExceptionSink object takes over ownership of the reference count)

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseException | ( | const char * | err,
|  | const char * | fmt,
|  |  | ...
| ) |  |

appends a Qore-language exception to the list

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  fmt | the format string for the description for the exception

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseException | ( | const char * | err,
|  | QoreStringNode * | desc
| ) |  |

appends a Qore-language exception to the list; takes owenership of the "desc" argument reference

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  desc | the description string for the exception; the ExceptionSink object takes ownership of the reference count

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseException | ( | QoreStringNode * | err,
|  | QoreStringNode * | desc
| ) |  |

appends a Qore-language exception to the list; takes owenership of the "desc" argument reference

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string for the exception; the ExceptionSink object takes ownership of the reference count
  desc | the description string for the exception; the ExceptionSink object takes ownership of the reference count

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseExceptionArg | ( | const char * | err,
|  | AbstractQoreNode * | arg,
|  | const char * | fmt,
|  |  | ...
| ) |  |

appends a Qore-language exception to the list, and sets the 'arg' member (this object takes over the reference count of 'arg')

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  arg | the 'arg' member of the Qore-language exception object; will be dereferenced when the QoreException object is destroyed
  fmt | the format string for the description for the exception

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseExceptionArg | ( | const char * | err,
|  | AbstractQoreNode * | arg,
|  | QoreStringNode * | desc
| ) |  |

appends a Qore-language exception to the list, and sets the 'arg' member (this object takes over the reference counts of 'arg' and 'desc')

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  arg | the 'arg' member of the Qore-language exception object; will be dereferenced when the QoreException object is destroyed
  desc | the description string for the exception; the ExceptionSink object takes ownership of the reference count

Returns
  always returns 0

DLLEXPORT AbstractQoreNode* ExceptionSink::raiseExceptionArg | ( | const char * | err,
|  | AbstractQoreNode * | arg,
|  | QoreStringNode * | desc,
|  | const QoreCallStack & | stack
| ) |  |

appends a Qore-language exception to the list, and sets the 'arg' member (this object takes over the reference counts of 'arg' and 'desc')

The AbstractQoreNode pointer returned is always 0; used to simplify error handling code.

Parameters

  err | the exception code string
  arg | the 'arg' member of the Qore-language exception object; will be dereferenced when the QoreException object is destroyed
  desc | the description string for the exception; the ExceptionSink object takes ownership of the reference count
  stack | a call stack to prepend to the Qore call stack

Returns
  always returns 0

Since
  Qore 0.8.13

The documentation for this class was generated from the following file:

- include/qore/ExceptionSink.h (79e5dd4f976dab9d74ec8272aec97c21df86c597)