croak is implemented with longjmp. Would you call longjmp from a catch block if this wasnt Perl? The simplest longjmp implementation will make the C++ exception dispatcher leak all of its resources.
WAG, do a goto from the catch block to the parent block (outside of try/catch), then call croak. Or try a finally block.