An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.
I've always considered this suspect with at least one good exception. Say my application lets a user enter the size of a matrix they want to work with. They enter a big number and I get an OutOfMemoryError trying to allocate the matrix. Should I let the application fall over and spew a trace stack on the console? Or catch the error and say "I don't have enough memory for such a big matrix".
I have seen this kind of recovery from OutOfMemoryError in my Wiki server but I didn't recall catching Throwable anywhere, so I just had a look through old logs. I found that the reflection API caught the OutOfMemoryError and threw an InvocationTargetException.
Anybody ever felt the need to catch OutOfMemory or StackOverflow?