Hi Jim,
Where does error_type come from? Isnt' there something in Zope that can tell me what error occurred (similar to dtml-try, but maybe on a global level - I'd hate to wrap all pages with try-catch blocks)
You can find out more in the Zope Developer book, e.g. in the chapter "Exceptions" at http://www.zope.org/Documentation/Books/ZDG/current/ObjectPublishing.stx Or simply look at lib/python/OFS/SimpleItem.py, method "raise_standardErrorMessage". (I find that more informative ;-) The "error_type" should actually be the same You get in the <dtml-except error_type_here>, and which is defined in the implicit variable 'error_type' there.
And if I provide the error_type how would I know it's a Not Found error?
This exceptions are actually raised in lib/python/ZPublisher/HTTPResponse.py, method "notFoundError". It is really simply the string "NotFound", which is raised in case of not findings a requested object, not some class (at least for my Zope.2.5.0). Thus my test: if error_type=="NotFound": ... should work. I do not know if there is a reference list of "standard exceptions" which may be thrown by the ZPublisher directly. (the objects published by the ZPublisher may raise any kind of exceptions anyway.) [snip citation]
## Script (Python) "standard_error_message" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=error_type=None, error_value=None, error_traceback=None, error_tb=None, error_message=None ##title= ##
if str(error_type) == 'NotFound': error_page = context.not_found else: error_page = context.general_error_message
return error_page(error_type=error_type, error_value=error_type,
BTW: stupid typo of mine: should read "error_value=error_value," of course.
error_message=error_message, error_traceback=error_traceback, error_tb=error_tb)