当程序收到不存在或不是目录的文件名参数时,我想引发错误。但是什么错误被认为是最佳实践?
我知道 ValueError
通常用于表示无效参数(我已经看到 several questions 了)。我还了解到,特别是在 Python 3.3 ( PEP 3151 ) 中对异常进行重组之后,OSError
是与系统交互相关问题的包罗万象的类别。
所以,我有一个需要文件名参数的程序。如果调用者提供的名称不存在,或者存在但是是一个目录,我应该引发什么错误?这是一个不正确的参数,所以似乎 ValueError
适用;但是如果我尝试将它作为文件读取,我将得到一个 OSError
——所以为了保持一致性不应该返回它吗?
最佳答案
它真的重要吗?(我假设您没有捕捉到这个异常,它纯粹是为了个人查看终端输出的信息目的)这些都不会被操作系统看到
raise Exception("Invalid Arguments, expected a file that exists not %r"%(filename))
或者让它在尝试自然打开文件时失败
关于python - 我应该为不存在的文件参数引发 ValueError 或 OSError 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954355/