I poked around in the cherrypy code a bit, and came up with the following, which will make HTTPErrors be handled by the custom _cpOnError method:
In _cphttptools.py of the cherrypy package change line 277 from: except (cherrypy.HTTPRedirect, HTTPError), inst: to except (cherrypy.HTTPRedirect), inst: This will make HTTPErrors be handle by the HandleError method instead of directly. The HandleError method is where the user defined _cpOnError is called. I suppose a bug should be filed... Where do I do that? :)

