在Python中的用户定义函数中,更好的做法是:raise异常或return None?例如,我有一个在文件夹中查找最新文件的函数。
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。还是用其他名称重新引发异常是不好的形式吗?
FileNotFoundError
IndexError
这实际上是语义问题。什么foo = latestpdf(d) 平均值 ?
foo = latestpdf(d)
没有最新文件完全合理吗?然后确定,只返回None。
您是否希望总是找到最新文件?引发异常。是的,重新提出一个更合适的例外是可以的。
如果这只是应该应用于任何目录的通用函数,我将做一个前一个并返回None。如果该目录是(例如)要成为包含应用程序已知文件集的特定数据目录,则将引发异常。