Nick Coghlan writes:

 > (RDM is also right that the exception still has the effect of
 > terminating the block early, but I view names as mnemonics rather
 > than necessarily 100% accurate descriptions of things).

This is just way too ambiguous for my taste.  I can't help reading

    with contextlib.ignore(ExceptionIDontFeelLikeHandlingProperly):
        stmt1
        stmt2
        stmt3

as

    try:
        stmt1
    except ExceptionIDontFeelLikeHandlingProperly:
        pass
    try:
        stmt2
    except ExceptionIDontFeelLikeHandlingProperly:
        pass
    try:
        stmt3
    except ExceptionIDontFeelLikeHandlingProperly:
        pass

rather than

    try:
        stmt1
        stmt2
        stmt3
    except ExceptionIDontFeelLikeHandlingProperly:
        pass

It just feels like the exception should be suppressed at some level
"lower" than stmtN, so stmtN fails but the suite continues.  How about

    with contextlib.break_on(ExceptionIDontFeelLikeHandlingProperly):
        stmt1
        stmt2
        stmt3

This is not 100% accurate Pythonically (there's no loop to break
here), but it does describe what the context manager does more
accurately, and it does effectively break out of the 'with' control
structure.

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to