Hi Chris, [...]
...this is an application level decision. The code currently makes it very easy, but at the expense of debugging any unexpected exceptions that code throws. While relational data may be "optional" for you, for many people it is ESSENTIAL, and is used for things like their auth details, content storage, etc. For them, this piece of code causes MAJOR suffering, especially for intermittent failures where you can't just insert a print_traceback and try again ;-)
Ok, understand (I guess ;-) [...]
If it does not, I would have to go back to an evil bare except ...
I wouldn't if I were you:
try: *your zsql method except ConflictError: raise except Exception: return "sorry, that certain piece of information is not availabe, because our sql data base sucks"
Ok, if this is the proper dance to catch such exceptions with Zope without risking ZODB corruption I will go with it. So far I have not been sure, that ConflictError is the only type needing special treatement in these cases. Clemens