Michael,
Many of us, myself included, have implemented something similar to what you've done. In my case, it was originally developed under FPD 2.0 and brought through to FPD 2.5, and FPW 2.5/2.6. I found that there were certain errors (mostly associated with indexes) that could be corrected almost transparently. Other errors were logged with a trace, program name, line number, etc. Of course, things have changed since then.
With VFP's Error method it's perfectly possible (though impractical) for every object to have it's own error handler, and not deal with a general error handling routine at all. From a theorhetical view, providing such would assure encapsulation. Practically, however, having an error handler that could handle every error with every object would unnecessarily drain system resources, since each instance of an object would bring an additional copy of the routine into memory.
I'm in the process of developing a new framework for VFP (to replace the one I was using under FPW). As a result, a topic such as this one is extremely interesting to me. I'd appreciate hearing what anyone else has done as well, especially if they provided what they saw were the pros and cons to their methods.
George
George
Ubi caritas et amor, deus ibi est