I can only think of two kinds of cases where I've swallowed exceptions.
When closing files or database connections. If I get an error on the close, what am I going to do about it? I suppose I really should write out some sort of error message, but if I've already successfully read the data, it seems superfluous. It also seems like a very unlike event to happen.
More justified: Inside error handling. If I fail trying to write to the log file, where am I going to write the error that says that I couldn't write an error? In some contexts you could try to write to the screen, but depending on the app, that might be impossible, e.g. a background job with no screen; or just confusing to the user who won't be able to do anything about the error anyway.
Another poster mentioned cases where you know the exception is impossible, or at least, that for it to happen there would have to be major problems with your compiler or operating environment, like it did not add two numbers together correctly, in which case who says the exception is meaningful?
I heartily agree that in these rare cases where it is legitimate, you should include a comment to explain why the exception is irrelevant or impossible. But then, I'd say that anytime you write code that is potentially cryptic, you should include an explanatory comment.
Side note: Why is it that programmers routinely include comments like "x=x+1; // add 1 to x", like duh, I never would have figured that out without the comment, but then throw in really cryptic code with no explanation?
Addendum four years after my original post
Of course the REAL reason why even good programmers sometimes swallow exceptions is: "I'm trying to get the basic logic working, I'm not sure what to do if this exception happens, I don't want to mess with it right now, I'm having too much trouble with the normal logic flow but I'll get back to it later." And then they forget to get back to it.
BTW a bad reason I've heard from several people who I generally think are pretty good programmers is: "I don't want to display a cryptic error message to the user. That would just confuse them. Better to silently swallow the error." That's a bad reason because, (a) You could still write something to a log file. And (b) Is a cryptic error message really worse than giving the user the impression that the operation succeeded when it didn't? Now the customer thinks their order is being processed when it really isn't, or they think the ambulance is being dispatched to help their child who is screaming in agony but really the message never went through, etc. Even in the most trivial of cases, a bland post on a forum didn't happen or some such, I would much rather get a cryptic message that at least gives me the idea that something went wrong and if I care I should try again or call somebody, then just say "update complete" when it really isn't.