Let exception fire or return None
Thomas 'PointedEars' Lahn
PointedEars at web.de
Thu Apr 30 14:05:22 CEST 2015
Cecil Westerhof wrote:
> I have a function to fetch a message from a file:
> def get_indexed_message(message_filename, index):
> Get index message from a file, where 0 gets the first message
> return open(expanduser(message_filename),
> What is more the Python way: let the exception fire like this code
> when index is to big, or catching it and returning None?
It is not only the Python way, it is the *correct* way to throw/_raise_ an
exception if the language allows it. Think of what “exception” means: there
is an *exceptional* (not normal) circumstance that causes execution of the
function/method to stop.
Return values and status values to indicate such errors were used before
exceptions, and are still used in languages that do not have exceptions.
But return values only work if you can tell them apart from success values.
You have only one error condition now. If you have a different error
condition in the future, you need a different return value for that to tell
it apart from the first error condition.
There comes a point where you are out of new return values for new error
conditions such that you cannot tell them apart from success values anymore.
And functions setting status values to refine return values are not
reentrant. But you can always throw a different type of exception or the
same type of exception with a different message.
> I suppose working zero based is OK.
Yes, it is the common approach.
Please do not cc me. / Bitte keine Kopien per E-Mail.
More information about the Python-list