public Value execute(Env env) { try { return(_block.execute(env)); } catch (QuercusLanguageException e) { Value value = null; try { value = e.toValue(env); } catch (Throwable e1) { throw new QuercusRuntimeException(e1); } for (int i = 0; i < _catchList.size(); i++) { Catch item = _catchList.get(i); if (value != null && value.isA(env, item.getId()) || item.getId().equalsString("Exception")) { if (value != null) { item.getExpr().evalAssignValue(env, value); } else { item.getExpr().evalAssignValue(env, NullValue.NULL); } return(item.getBlock().execute(env)); } } throw e; } catch (QuercusDieException e) { for (int i = 0; i < _catchList.size(); i++) { Catch item = _catchList.get(i); if (item.getId().equalsString("QuercusDieException")) { item.getExpr().evalAssignValue(env, env.createException(e)); return(item.getBlock().execute(env)); } } throw e; } catch (QuercusExitException e) { for (int i = 0; i < _catchList.size(); i++) { Catch item = _catchList.get(i); if (item.getId().equalsString("QuercusExitException")) { item.getExpr().evalAssignValue(env, env.createException(e)); return(item.getBlock().execute(env)); } } throw e; } catch (Exception e) { for (int i = 0; i < _catchList.size(); i++) { Catch item = _catchList.get(i); if (item.getId().equalsString("Exception")) { Throwable cause = e; //if (e instanceof QuercusException && e.getCause() != null) //cause = e.getCause(); item.getExpr().evalAssignValue(env, env.createException(cause)); return(item.getBlock().execute(env)); } } if (e instanceof QuercusException) { throw (QuercusException)e; }