Error handling in file generation (Pythonic way: with / decorators?)

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Wed Aug 29 05:29:09 EDT 2007


On Wed, 29 Aug 2007 08:58:52 +0000, xavim wrote:

> I am having some problems with how to do proper error handling.
> One of the requirements is that the destination file should not be
> created if there is any error in the processing.
> 
> I have come out with the following code::
> 
>     dictfile = file(dictpath, 'w')
>     try:
>         try:
>             dictgen(dictfile, *sources)
>         finally:
>             dictfile.close()
>     except error, e:
>         os.remove(dictpath)
>         sys.exit(str(e))
>     except:
>         os.remove(dictpath)
> 
> but it appears to me as somewhat ugly.  Is there any more Pythonic
> way to abstract this kind of error handling?  Maybe 'with' or
> decorators could be useful here?

With ``with`` you can get rid of the inner ``try``/``finally``:

    dictfile = open(dictpath, 'w')
    try:
        with dictfile:
            dictgen(dictfile, sources)
    except error, e:
        os.remove(dictpath)
        sys.exit(str(e))
    except:
        os.remove(dictpath)
        raise

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list