@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); printMethodName(methodName); if (methodName.startsWith("gl")) { try { // Try to evaluate result first, so we can see output values. Object result = method.invoke(obj, args); printArgs(methodName, args, method.getParameterTypes()); printResult(methodName, result, method.getReturnType()); printNewLine(); return result; } catch (Throwable ex) { // Execution failed, print args anyway // but output values will be incorrect. printArgs(methodName, args, method.getParameterTypes()); printNewLine(); System.out.println("\tException occurred!"); System.out.println(ex.toString()); throw ex; } } else { printNewLine(); return method.invoke(obj, args); } } }
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { String methodName = method.getName(); printMethodName(methodName); if (methodName.startsWith("gl")) { try { // Try to evaluate result first, so we can see output values. Object result = method.invoke(obj, args); printArgs(methodName, args, method.getParameterTypes()); printResult(methodName, result, method.getReturnType()); printNewLine(); return result; } catch (Throwable ex) { // Execution failed, print args anyway // but output values will be incorrect. printArgs(methodName, args, method.getParameterTypes()); printNewLine(); System.out.println("\tException occurred!"); System.out.println(ex.toString()); throw ex; } } else { printNewLine(); return method.invoke(obj, args); } } }