小编典典

引发异常与返回函数中无?

python

在Python中的用户定义函数中,更好的做法是:raise异常或return None?例如,我有一个在文件夹中查找最新文件的函数。

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

另一个选择是保留异常并在调用者代码中处理它,但我认为处理aFileNotFoundError比处理a更清楚IndexError。还是用其他名称重新引发异常是不好的形式吗?


阅读 149

收藏
2021-01-20

共1个答案

小编典典

这实际上是语义问题。什么foo = latestpdf(d) 平均值

没有最新文件完全合理吗?然后确定,只返回None。

您是否希望总是找到最新文件?引发异常。是的,重新提出一个更合适的例外是可以的。

如果这只是应该应用于任何目录的通用函数,我将做一个前一个并返回None。如果该目录是(例如)要成为包含应用程序已知文件集的特定数据目录,则将引发异常。

2021-01-20