(original) (raw)

On 16 October 2013 05:17, Alexander Belopolsky <alexander.belopolsky@gmail.com> wrote:
On Tue, Oct 15, 2013 at 12:45 PM, Ethan Furman <ethan@stoneleaf.us> wrote:

> with trap(OSError) as cm:

> os.unlink('missing.txt')

> if cm.exc:

> do_something()


.. and why is this better than

try:
os.unlink('missing.txt')
except OSError as exc:
do\_something()

It would allow you to perform a series of operations then process the any exceptions all together e.g.

with trap(OSError) as cm1:
os.unlink('missing.txt')

with trap(OSError) as cm2:
os.unlink('other\_missing.txt')

with trap(OSError) as cm3:
os.unlink('another\_missing.txt')

for cm in (cm1, cm2, cm3):
if cm.exc:
do\_something(cm.exc)

An equivalent implementation would be:

exceptions = \[\]

try:
os.unlink('missing.txt')
except OSError as exc:
exceptions.append(exc)

try:
os.unlink('missing.txt')
except OSError as exc:
exceptions.append(exc)

try:
os.unlink('missing.txt')
except OSError as exc:
exceptions.append(exc)

for exc in exceptions:
if exc:
do\_something(exc)

Tim Delaney