I have come across this question several times, you need to do some performance testing (request process times, load times, etc) or track unhanded exceptions. The answers usually come down to writing a HTTP Module, hook into specific events and log them somewhere, or use the built in health monitoring?
Why would we use one over the other? What are the pros and cons?
You can write your own HTTP Module that logs unhandled exception or you can use ASP.Net health monitoring. I guess you are not aware of the fact, that you can write your own provider for ASP.Net health Monitoring that allows you to send e-mails, log to the database, or do whatever you want with the exception.
A big pro for using a custom provider is, that it supports buffering exception into groups naturally, to reduce spam/performance problems. If you use your own HTTP Module for that, you need to write more code that would only do the same but has the disadvantage that it costs time and might be error-prone.
Another small pro would be, that other developers realize quicker how your errors are processed by just looking at the healthMonitoring xml-node rather than looking for all HttpModules.
For custom health monitoring providers, you might take a look at this question: How to write and configure a custom provider for ASP.Net Healthmonitoring?