【发布时间】:2016-04-16 14:33:23
【问题描述】:
如果我有一个读取文件并返回值列表的函数,但该文件不存在,或者为进程设置了读取权限,或者任何其他类型的异常,最好:
- 让异常自然发生
- 尝试/捕获异常并将错误打印为字符串,并返回 -1 或其他一些失败 int
- 尝试/捕获异常并且不打印任何内容,但返回 -1
- 尝试/捕获异常并返回空列表(具有误导性)
- 别的东西
在这种情况下,如果重要的话,我们说的是 Python。
【问题讨论】:
-
也许您应该使用 pytest 或 unittest 为您的脚本编写测试,尽可能多地有效地破坏它。每次代码中断时,在脚本中构建适当的异常处理。我喜欢亲自打印错误,因为它为用户/开发人员提供了关于发生了什么问题的线索。决定回报是什么,并围绕它设计程序。
-
在我看来,这取决于函数的作用以及在某种程度上谁将运行您的代码。如果该功能是必要的操作并且程序没有它就无法继续,我会抛出一个错误。如果没有必要并且操作可以在没有它的情况下继续,则捕获错误,可能会打印警告并返回 -1 以让任何调用它知道它失败了。如果您的代码由 python 开发人员运行,您可以让异常发生。如果您期望非技术用户,请抓住它并打印一条合理的错误消息。