public boolean catchUncaught(Exception e, boolean retry) {
        if (e instanceof UncaughtException)
            return catchUncaught((UncaughtException) e);
        else if (e instanceof DieException) {
            System.exit(((DieException) e).getExitCode());
            return true;
        } else if (e instanceof ErrorException) {
            ErrorException er = (ErrorException) e;

            getErrorReportHandler().onFatal(er);

            JVMStackTracer tracer = scope.getStackTracer(e);

            int i = 0;
            for (JVMStackTracer.Item el : tracer) {
                if (!el.isInternal()) {
                    echo("\n\t #" + (i++) + " " + el);
                }
            }

            echo("\n");

            for (JVMStackTracer.Item el : tracer) {
                if (!el.isSystem()) {
                    echo("\n\t " + (el.isInternal() ? "" : "->") + " " + el);
                }
            }

            return true;
        } else if (e instanceof FinallyException) {
            // nop
            return true;
        } else if (e instanceof BaseBaseException) {
            BaseBaseException be = (BaseBaseException) e;

            if (exceptionHandler != null) {
                try {
                    exceptionHandler.onException(this, be);
                } catch (BaseBaseException _e) {
                    if (retry) {
                        throw new RuntimeException(_e);
                    } else {
                        catchUncaught(_e, true);
                    }
                } catch (Throwable throwable) {
                    throw new RuntimeException(throwable);
                }
                return true;
            } else {
                try {
                    ExceptionHandler.DEFAULT.onException(this, be);
                    return true;
                } catch (Throwable throwable) {
                    throw new RuntimeException(throwable);
                }
            }
        } else {
            throw new RuntimeException(e);
        }
    }
Remove all method which does not destruct

@throws Throwable
jphp-runtime/src/php/runtime/env/Environment.java