Pythonのユーザー定義関数では何が良いのですか?例外を発生させるか、Noneを返しますか?たとえば、私はフォルダ内の最新のファイルを見つける関数を持っています。Python関数で例外を発生させずに返すなし
def latestpdf(folder):
# list the files and sort them
try:
latest = files[-1]
except IndexError:
# Folder is empty.
return None # One possibility
raise FileNotFoundError() # Alternative
else:
return somefunc(latest) # In my case, somefunc parses the filename
別のオプションは、例外を残して、発信者のコードでそれを処理ですが、私はそれははIndexErrorよりFileNotFoundErrorに対処するために、より明確なの姿。それとも、別の名前で例外を再発行するのは悪いフォームですか?
類似:http://stackoverflow.com/questions/1152541/is-it-better-to-use-exception-or-return-code-in-python – codeape
私は強制的に例外を発生させるために傾いています呼び出し関数で例外を処理します。呼び出し側の関数で出力がNoneかどうかを忘れると、潜在的なバグが発生する可能性があります。 Noneを返した場合、呼び出し関数の次の行でAttributeErrorが発生することを願っています。しかし、返された値がディクショナリに追加され、100の関数呼び出しが別のソースファイルに追加された場合、AttributeErrorが発生します。 – IceArdor
一般的に、私はまた、特別な意味を持つ値や、ある関数に対して複数のシグニチャを持つ値(文字列またはNoneを返す可能性がある)を避けることもできます。 – IceArdor