I can think of two reasons off the top of my head: 1) Using exceptions for flow control basically means that you are using exceptions as a goto mechanism, and gotos make for messy, spaghetti code. 2) Creating and catching an exception brings overhead of creating an object. This is much slower and more expensive than using standard flow-control.
And to pad my stats with three posts for one answer... Try a search on google for things like "Exception Handling Philosophy Java". You're likely to turn up some interesting articles. And you might want to try a search through JavaWorld's articles. Good Luck.