pub fn try_catch_first<R, F: FnMut() -> R + RefUnwindSafe>(func: F) -> Result<R, CatchError> {
    do_try_catch(func, true)
}
PHP proposes a try catch mechanism in C using setjmp and longjmp (bailout)
It stores the arg of setjmp into the bailout field of the global executor
If a bailout is triggered, the executor will jump to the setjmp and restore
the previous setjmp

[`try_catch_first`] allows to use this mechanism

This functions differs from [`try_catch`] as it also initialize the bailout
mechanism for the first time

# Returns

* The result of the function

# Errors

* [`CatchError`] - A bailout occurred during the execution
src/zend/try_catch.rs