interaction between '_setjmp' and C++ object destruction is non-portable
On some platforms, functions that include _setjmp may not support C++ object semantics of destruction when out of scope.
To avoid unexpected behavior, avoid using _setjmp in functions that have constructors and destructors.