"Unhandled exception" term
In .NET Framework, unhandled exceptions are the exceptions which were not handled by the application itself, and result in a crash. In a case of a desktop application, it means that a window similar to this one is displayed:
For a web application, it mostly means an HTTP 500.
Under unhandled exceptions, I also include ones which are "handled globally", i.e., in a case of a desktop applications, the global handling which consists of displaying a custom window instead of the Windows default one.
Context
When I work as a freelancer, I use my own in-house solution to gather unhandled exceptions from different sources (web apps and desktop apps). The gathered results are then displayed on a monitoring panel in real time as well as collected for future analysis (to be linked with a bug tracking software, etc.)
Currently, I work in a company where I wouldn't be able to use my in-house solution to collect the exceptions (one of the reasons being that they won't accept to send all the exception messages to my servers).
This company doesn't have any precise strategy for collecting unhandled exceptions. The only solution which was used before is both rudimentary and out of question: it consists of sending every exception by e-mail.
This means that for the new product I'm working on, we should develop a custom strategy for collecting unhandled exceptions.
Question
I can always do by hand the part which will save the exceptions to the database or a log and the part which will load them from the database, a log or Windows Events.
I would like to avoid reinventing the wheel and use something which is already commonly used.
What are my choices? How are unhandled exceptions usually collected and processed later?
By the way:
- Are there any libraries which help collecting those exceptions?
- Are there any software products which help analyzing those exceptions?