繁体   English   中英

是否应该为不存在的文件参数引发ValueError或OSError?

[英]Should I raise ValueError or OSError for non-existent file arguments?

当程序收到不存在或不是目录的文件名参数时,我想引发一个错误。 但是什么错误被认为是最佳实践?

我知道ValueError通常用于表示无效的参数(并且我已经看到了几个有关它的问题 )。 我也了解到,尤其是在Python 3.3( PEP 3151 )中重新组织了异常之后, OSError是与系统交互相关的问题的综合类。

因此,我有一个期望文件名参数的程序。 如果调用方提供的名称不存在,或者存在但仅是目录,我应该引发什么错误? 这是一个错误的参数,因此似乎ValueError适用; 但是,如果我尝试从文件中读取文件,则会收到OSError -难道不应该为了一致性而返回此错误?

真的重要吗?(我假设您没有捕获此异常,并且它纯粹是出于个人查看终端输出的信息目的),操作系统将不会看到任何异常,我只是

raise Exception("Invalid Arguments, expected a file that exists not %r"%(filename))

或尝试自然打开文件时让它失败

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM