P99
Defines
Try, catch and finally blocks
Preprocessor Blocks
+ Collaboration diagram for Try, catch and finally blocks:

Defines

#define P99_CATCH(...)
 Designate a block that is executed regardless of the exceptions that were encountered in the corresponding try block.
#define P99_FINALLY
 Designate a block that is executed regardless of the exceptions that were encountered in the corresponding try block.
#define P99_RETHROW   p00_jmp_throw(p00_code, p00_unwind_top, 0, 0, 0)
 Stop execution at the current point inside a P99_FINALLY or P99_CATCH clause and propagate the same exception that led here to the next level.
#define P99_THROW(X)   p00_jmp_throw((X), p00_unwind_top, P99_STRINGIFY(__LINE__), __func__, "throw")
 Stop execution at the current point and signal an exception of value X to the next P99_TRY clause on the call stack, if any.
#define P99_THROW_CALL_NEG(F, E,...)   P00_THROW_CALL_NEG(F, E, __VA_ARGS__)
 Wrap a function call to F such that it throws an error on negative return.
#define P99_THROW_CALL_NEGATE(F, E,...)   P00_THROW_CALL_NEGATE(F, E, __VA_ARGS__)
 Wrap a function call to F such that it throws an error on negative return.
#define P99_THROW_CALL_RANGE(F,...)
 Wrap a function call to F such that it throws an error on failure.
#define P99_THROW_CALL_RANGE_ARG_0   permitted
#define P99_THROW_CALL_RANGE_ARG_1   permitted
#define P99_THROW_CALL_RANGE_ARG_2   permitted
#define P99_THROW_CALL_RANGE_ARG_3   permitted
#define P99_THROW_CALL_RANGE_ARG_4   permitted
#define P99_THROW_CALL_THRD(F,...)   p00_throw_call_thrd(F(__VA_ARGS__), p00_unwind_top, P99_STRINGIFY(__LINE__), __func__, #F ", no thrd_success")
 Wrap a "thread" function call to F such that it throws an error on failure.
#define P99_THROW_CALL_VOIDP(F, E,...)   P00_THROW_CALL_VOIDP(F, E, __VA_ARGS__)
 Wrap a function call to F such that it throws an error on invalid return.
#define P99_THROW_CALL_ZERO(F, E,...)   p00_throw_call_zero(F(__VA_ARGS__), E, p00_unwind_top, P99_STRINGIFY(__LINE__), __func__, #F ", non-zero return")
 Wrap a function call to F such that it throws an error on failure.
#define P99_THROW_ERRNO   p00_throw_errno(p00_unwind_top, EINVAL, P99_STRINGIFY(__LINE__), __func__, "THROW_ERRNO")
 Capture, clean and throw the current value of errno.
#define P99_TRY
 Create a block that can catch exceptions.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines