[Python-3000] Exception re-raising woes

Antoine Pitrou solipsis at pitrou.net
Sat May 31 03:33:14 CEST 2008


Guido van Rossum <guido <at> python.org> writes:
> I would be okay as well with restricting bare raise syntactically to
> appearing only inside an except block, to emphasize the change in
> semantics that was started when we decided to make the optional
> variable disappear at the end of the except block.
> 
> This would render the following code illegal:
> 
> def f():
>   try: 1/0
>   except: pass
>   raise

But you may want to use bare raise in a function called from an exception
handler, e.g.:

def handle_exception():
    if user() == "Albert":
        # Albert likes his exceptions uncooked
        raise
    else:
        logging.exception("an exception occurred")

def f():
    try:
        raise KeyError
    except:
        handle_exception()


Antoine.




More information about the Python-3000 mailing list