At 03:00 PM 5/12/2005 -0500, Ka-Ping Yee wrote: >This is all so intricate i'm not sure if i got it right. Somebody >let me know if this looks right or not. (In any case, i look forward >to the day when i can rely on someone else to get it right, and they >only have to write it once!)
It looks fine, but it's not a use case for suppressing exceptions, nor was the exception-chaining example. Really, the only use case for suppressing exceptions is to, well, suppress exceptions that are being logged, shown to the user, sent via email, or just plain ignored. Guido's point, I think, is that these use cases are rare enough (yet simple and similar enough) that they don't deserve support from the cleanup facility, and instead should use a try/except block. After reviewing the cases in my own code where I might've used a 'with logged_exceptions()' or similar blocks, I think I now agree. The difference between: try: BLOCK except: logger.exception(...) and: with log_errors(logger): BLOCK doesn't seem worth the effort, especially since this pattern just doesn't occur that often, compared to resource-using blocks. What *your* use cases seem to illustrate, however, is that it's quite possible that an __exit__ might well need to contain complex error handling of its own, including the need to throw a different exception than the one that was passed in. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com