Java fills in Exception stack traces when the exception is instantiated (new) rather than when the exception is thrown.

cf. http://stackoverflow.com/questions/1696765/why-can-i-fake-the-stack-trace-of-an-exception-in-java

So, though this shared static exception instance is thrown here, it will have the stack trace from the (static) line where is is instantiated, and this line where the unauthorized service condition occurred will not be included in the stack trace potentially logged.

I still think it would be better to use exceptions more traditionally (as in, new them where thrown, with one Exception instance per instance of encountering the exceptional condition rather than one shared static instance of the exception).

Or, perhaps what's wanted here is to refactor away from using an Exception to represent what is, ultimately, not that exceptional of a condition?