### Question:
ELEvaluator { @SuppressWarnings({"unchecked"}) public <T> T evaluate(String expr, Class<T> clazz) throws Exception { ELEvaluator existing = current.get(); try { current.set(this); return (T) evaluator.evaluate(expr, clazz, context, context); } catch (RuntimeException ex) { if (ex.getCause() instanceof Exception) { LOG.debug("Unfolding exception", ex); throw (Exception) ex.getCause(); } else { throw ex; } } finally { current.set(existing); } } ELEvaluator();  ELEvaluator(Context context); static ELEvaluator getCurrent(); Context getContext(); void setVariable(String name, Object value); Object getVariable(String name); @SuppressWarnings({"unchecked"}) T evaluate(String expr, Class<T> clazz); static final XLog LOG; }### Answer:
@Test public void testFunctionELEvaluationError() throws Exception { try { ELEvaluator.Context support = new ELEvaluator.Context(); support.addFunction("a", "a", functionError); ELEvaluator evaluator = new ELEvaluator(support); evaluator.evaluate("${a:a()}", String.class); fail(); } catch (ELEvaluationException ex) { } }