This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
You are creating a new type of Exception and then "returning" that Exception (which is also throwable) from a method.
If you modify your program like so..
You could trace the call to the method e. So I think this might be one way of to determine how a certain method/constructor gets called in the execution of a program without exiting the normal flow of the program.