Here are examples of good ways of using try/catch:
1. Say you are opening a file and then reading structures out of it, which you're putting into a std::map.
You need ONE try...catch statement, which can deal with any of the following:
* File can't be opened
* File reading failed
* Memory allocation failed
* A duplicate structure ID already exists in the map
etc., because in general, the overall program's response should be the same to any of these errors: give an error message (which you put in your exception), cleanup (which is done automatically as the exception propagates) and then do whatever you do when a file can't be opened (which is what happens in your catch).
Another example would be an application that needed to download information from a webpage. You can have many error conditions:
* Can't open a socket
* Can't connect to remote server
* No response from remote server
* Response from remote server is incorrect
etc.
Again, a single try, a single catch. All cleanup is automatic.