From: "Mark Storer"
And while using a language feature for something other than its original intent is not criminal, there are usually 'proper' ways to do things already built into the language, ways that often work better than subjecting some poor unsuspecting feature to your vile, unnatural manipulations. <Dudly Do-Right>You fiend!
This is all subjective. Original intents do not stay that way forever, as the language and our understanding of it evolves. What you think is "right" today will become "wrong" tomorrow. You can only decide what is right by using (somewhat) objective measures. Code clarity, maintainability, performance, correctness, that sort of thing.
In the case that brought all this up (returning a value from a graph's visitor to avoid iterating through the whole graph) the proper way to handle it is to alter the algorithm to allow for early termination.
Possibly. But not for the reasons stated, that exceptions must not be used _that_ way because well I say so. And even Stroustrup kind of said so, so there. You are wrong! You fiend.