To answer this question you must first understand at which level you are in the abstraction layer. There are not many decisions you can make. All you can do is throw it again or handle it somehow. The worst thing to do is to ignore it.
I will not try to make a long post about this, I just want to talk about a few cases I have encountered. Let's try to answer this question in the following scenarios:
- exception caught inside library code
- exception caught in some interactive environment
- exception caught in not-interactive environment