cosmopolitan/third_party/duktape/duk_exception.h

31 lines
1005 B
C
Raw Normal View History

2020-06-15 14:18:57 +00:00
/*
* 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 */