Writing good error handling code is hard in any language, whether you have exception handling or not. When I’m thinking about what exception handling I need to implement in a given program, I first classify every exception I might catch into one of four buckets which I label fatal, boneheaded, vexing and exogenous.
Source: Vexing exceptions – Fabulous Adventures In Coding
Read Eric Lippert’s full post for ideas on classifying exception types for your circumstances, and thus whether or not you should attempt to handle such exceptions!