X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=CODINGSTYLE;h=348a2f51340bfe3545b7f9477cde631343126e7c;hb=51e0158c85a3519be1b3bc5ac4f1349f5010923c;hp=0344157516773c0e1709fb07484c9e8b18408217;hpb=9fc0171c58dd467586f70251228a39a486d35673;p=bup.git diff --git a/CODINGSTYLE b/CODINGSTYLE index 0344157..348a2f5 100644 --- a/CODINGSTYLE +++ b/CODINGSTYLE @@ -43,7 +43,6 @@ explicitly add stack traces to any exceptions that are going to be re-raised by anything other than a no-argument raise (otherwise the stack trace will be lost):: - try: ... except ... as ex: @@ -52,11 +51,24 @@ stack trace will be lost):: ... raise pending_ex -If an exception is thrown from an exception handler, the pending +When an exception is thrown from an exception handler, the pending exception should be the `"context" `_ -of the new exception This can be accomplished via -``add_ex_ctx()``:: +of the new exception, which can be accomplished (portably) via +``pending_raise()``:: + + try: + ... + except ... as ex: + with pending_raise(ex): + clean_up() + +This should do roughly the same thing in Python 2 and Python 3, +throwing any exception from ``clean_up()`` after adding ex as the +``__context__`` if clean_up() throws, and throwing ``ex`` otherwise. + +If for some reason, you need more control, you can use +``add_ex_ctx()`` directly:: try: ... @@ -67,5 +79,7 @@ of the new exception This can be accomplished via except ... as ex2: add_ex_tb(ex2) raise add_ex_ctx(ex2, ex) + raise -See the end of ``lib/bup/compat.py`` for a functional example. +See the end of ``lib/bup/compat.py`` for a functional example, and all +of this can be removed once we drop support for Python 2.