The client will always receives a return value of "intercpted". The methos testzero is not invoked.
I don't know what's the good answer because the answer D is: D - The client receives a return value of "intercepted". and the return of the method Intercept is "intercpted".
I hope it's a copy error and the exam don't test on it.
The testzero method is not invoked because the interceptor method does not contain the ctx.proceed(); statement. Due to this reason, the next method in the chain, that is testzero business method is never invoked.
So I think that the interceptor method is invoked even if there's no throw Exception. But I know that, in some points, OC4J doesn't follow the EJB specifications.
The interceptor method can throw Exception. That is can can throw any checked Exception and run-time Exception. Also, If the interceptor method can throw only the Exception which are defined in the business method.
This mean that the interceptor method can be without throws clause, if the exceptions are handles internally in the method.
Your example is running perfectly. I think OC4J container is Java EE compliant with some extra facilities.