E.g。如果我尝试打开文件,我不能简单地检查是否os.path.exists(myfile)
而不是try/except
。我认为我不应该依赖os.path.exists(myfile)
的原因的答案是,可能存在许多其他原因导致文件无法打开。
这是使用
try/except
进行错误处理的原因吗?是否有关于何时在Python中使用异常的一般准则。
答案 0 :(得分:5)
比赛条件。
在检查文件是否存在与执行操作之间的时间内,该文件可能已被删除,编辑,重命名等...
除此之外,异常将为您提供操作系统错误代码,以便您了解操作失败的更多相关原因。
最后,被认为是Pythonic要求宽恕,而不是要求许可。
答案 1 :(得分:4)
一般来说,当你处理超出你可以影响的参数的东西时,你会使用try / except。
在您的脚本中,您可以检查类型的变量,长度列表等,并且您可以确保结果足够,因为您是唯一处理这些对象的人。但是,当您处理文件系统中的文件或连接到远程主机等时,您既不能再影响或检查所有参数,也不能确保检查结果保持有效。
正如你所说,
有太多因素可能会出错,无法单独检查它们,如果你这样做,它们可能会一直改变,直到你真正执行命令为止。
使用try / error,您通常可以捕获每个异常并单独处理最重要的错误。即使测试最初成功但在开始运行命令后失败,也要确保处理错误。