This solution may work some times, but other than making code much more verbose than it already is (some consider it obscenely verbose to work with procedural abstraction through Java's InnerClasses), it also forces to take the decision handling exception in probably the wrong place -- very deep in the call tree.