public static Cons cppTranslateHandleException(Cons tree) {
    { Cons variabledecl = ((Cons)(tree.rest.value));
      Stella_Object variable = variabledecl.value;
      Stella_Object exceptiontype = variabledecl.rest.value;
      StringWrapper helpervariable = null;
      StringWrapper helpervariabletype = null;

      tree.firstSetter(Stella.SYM_STELLA_CPP_CATCH);
      if (variable != null) {
        helpervariable = StringWrapper.wrapString("_" + Symbol.cppTranslateName(((Symbol)(variable))).wrapperValue);
        helpervariabletype = StringWrapper.wrapString(Native.stringConcatenate(StandardObject.cppTranslateTypeSpec(((StandardObject)(exceptiontype))).wrapperValue, "&"));
      }
      tree.secondSetter(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_TYPE, Cons.cons(((variable != null) ? helpervariabletype : StandardObject.cppTranslateTypeSpec(((StandardObject)(exceptiontype)))), Cons.cons(Stella.NIL, Stella.NIL)))), (((variable != null) ? Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons(helpervariable, Cons.cons(Stella.NIL, Stella.NIL)))), Stella.NIL) : Stella.NIL)).concatenate(Stella.NIL, Stella.NIL)));
      tree.rest.rest = Cons.cppTranslateListOfTrees(tree.rest.rest);
      if (variable != null) {
        tree.rest.rest = Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_LOCAL, Cons.cons(null, Cons.cons(Cons.cons(StandardObject.cppTranslateAndPointerizeTypeSpec(((StandardObject)(exceptiontype))), Cons.list$(Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons(Symbol.cppTranslateName(((Symbol)(variable))), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Cons.list$(Cons.cons(Stella.SYM_STELLA_CPP_IDENT, Cons.cons(StringWrapper.wrapString(Native.stringConcatenate("&", helpervariable.wrapperValue)), Cons.cons(Stella.NIL, Stella.NIL)))), Cons.cons(Stella.NIL, Stella.NIL))))), Stella.NIL)))), tree.rest.rest.concatenate(Stella.NIL, Stella.NIL));
      }
      return (tree);
    }
  }