Like a good consultant, I say "it depends."
In general in Java you have a clear idea of what all the possible exceptions at a particular point in the code might be. It's not uncommon to see someone use
} catch (Exception e){
// log or stack trace
}
... in more or less throwaway code. In general, though, you shouldn't catch an exception you don't know how to handle usefully. (Never, never ever, do catch (Exception x) ;
, ie, just throw away the exception. Never.)
The controlling thing is to ask "what can I do with this?" Often, a file not ound exception can be handled by asking a user where his file has gone. A zip file exception is harder to handle. Thus, you might want to have separate behaviors.
On the other hand, if it's a command line program, you might want nothing more than an error message in either case.
One other bit of advice; don't output a stack trace in "cutomer facing" code -- code that a non-programmer might see. Nonprogrammers tend to look at the compleities of a stack trace and panic. It's better to translate the exception to a message like "File 'filename' not found." and, if you really want a stack trace, ose logging to send it to debug level output.