Are their any best practices?
You can listen for them like so:
craft()->onException = array($this, 'myCustomExceptionMethodHandler');
craft()->onError = array($this, 'myCustomErrorMethodHandler');
Craft currently doesn't have any events around error handling, but it's probably not a bad idea to do so for situations like this.
I've added it to our list.
In the meantime, the only workaround I can think of is pretty sketchy, but a plugin could monitor the
craft/storage/runtime/logs folder for
[error] entries and parse the text for the information it needs.