question about try/except blocks

Devin Jeanpierre jeanpierreda at gmail.com
Thu May 2 22:23:11 EDT 2013


On Thu, May 2, 2013 at 9:54 PM, J <dreadpiratejeff at gmail.com> wrote:
> Would it be better to wrap the call and catch the OSError there, or
> wrap the whole with open() block in the function itself?
>
> My thought is to wrap the with open() call in the function so that I'm
> not wrapping the function call every time I use the class somewhere,
> but then I am not sure of that as it leads to nested try blocks like
> so:

It definitely shouldn't be done that way, since you might catch
exceptions in other circumstances too. Try this:

try:
    f = open(dest, 'wb', 0)
except OSError as exc:
    ...
with f:
    try:
        ...
    except IOError as exc:
        ...
    else:
        ...

-- Devin

> try:
>     with open(dest, 'wb', 0) as outfile:
>         try:
>             stuff
>         except IOError as exec:
>             more stuff
>         else:
>             other stuff
> except OSError as exc:
>      error handling stuff
>      return False
>
>
> I think, functionally, that should work, but should nested try/except
> blocks be avoided?



More information about the Python-list mailing list