|
|
|
/*
|
|
|
|
* Exceptions for Duktape internal throws when C++ exceptions are used
|
|
|
|
* for long control transfers.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#if !defined(DUK_EXCEPTION_H_INCLUDED)
|
|
|
|
#define DUK_EXCEPTION_H_INCLUDED
|
|
|
|
|
|
|
|
#if defined(DUK_USE_CPP_EXCEPTIONS)
|
|
|
|
/* Internal exception used as a setjmp-longjmp replacement. User code should
|
|
|
|
* NEVER see or catch this exception, so it doesn't inherit from any base
|
|
|
|
* class which should minimize the chance of user code accidentally catching
|
|
|
|
* the exception.
|
|
|
|
*/
|
|
|
|
class duk_internal_exception {
|
|
|
|
/* intentionally empty */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Fatal error, thrown as a specific C++ exception with C++ exceptions
|
|
|
|
* enabled. It is unsafe to continue; doing so may cause crashes or memory
|
|
|
|
* leaks. This is intended to be either uncaught, or caught by user code
|
|
|
|
* aware of the "unsafe to continue" semantics.
|
|
|
|
*/
|
|
|
|
class duk_fatal_exception : public virtual std::runtime_error {
|
|
|
|
public:
|
|
|
|
duk_fatal_exception(const char *message) : std::runtime_error(message) {
|
|
|
|
}
|
|
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* DUK_EXCEPTION_H_INCLUDED */
|