Python Error-Checking Standard Practice

Posted by chaindriver on Stack Overflow See other posts from Stack Overflow or by chaindriver
Published on 2010-05-16T12:25:01Z Indexed on 2010/05/16 12:30 UTC
Read the original article Hit count: 234

Filed under:
|
|

Hi,

I have a question regarding error checking in Python. Let's say I have a function that takes a file path as an input:

def myFunction(filepath):
    infile = open(filepath)
    #etc etc...

One possible precondition would be that the file should exist.

There are a few possible ways to check for this precondition, and I'm just wondering what's the best way to do it.

i) Check with an if-statement:

if not os.path.exists(filepath):
    raise IOException('File does not exist: %s' % filepath)

This is the way that I would usually do it, though the same IOException would be raised by Python if the file does not exist, even if I don't raise it.

ii) Use assert to check for the precondition:

assert os.path.exists(filepath), 'File does not exist: %s' % filepath

Using asserts seems to be the "standard" way of checking for pre/postconditions, so I am tempted to use these. However, it is possible that these asserts are turned off when the -o flag is used during execution, which means that this check might potentially be turned off and that seems risky.

iii) Don't handle the precondition at all

This is because if filepath does not exist, there will be an exception generated anyway and the exception message is detailed enough for user to know that the file does not exist


I'm just wondering which of the above is the standard practice that I should use for my codes.

© Stack Overflow or respective owner

Related posts about python

Related posts about assert