首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在函数中引发异常还是返回无?

在函数中引发异常还是返回无?
EN

Stack Overflow用户
提问于 2009-08-22 03:28:20
回答 2查看 49.9K关注 0票数 91

在Python中的用户定义函数中,哪个是更好的实践:raise、exception还是return None?例如,我有一个在文件夹中查找最新文件的函数。

代码语言:javascript
复制
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

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

EN

回答 2

Stack Overflow用户

发布于 2018-12-02 05:05:23

使用Python3.5的typing

返回None时的示例函数如下:

代码语言:javascript
复制
def latestpdf(folder: str) -> Union[str, None]

当引发异常时,将会是:

代码语言:javascript
复制
def latestpdf(folder: str) -> str 

选项2看起来更具可读性和pythonic风格

(+如前所述向异常添加注释的选项。)

票数 4
EN

Stack Overflow用户

发布于 2009-08-21 19:34:15

一般来说,我会说,如果发生了一些无法恢复的灾难性事件,应该抛出一个异常(例如,你的函数处理一些无法连接的internet资源),如果你的函数真的应该返回一些东西,但没有合适的东西可以返回,你应该返回None。例如,如果您的函数尝试匹配字符串中的子字符串,则为"None“)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1313812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档