未传递IOError的异常:[Erno 2]



我在py2.7中开发了一个简单的游戏,它使用pickle读取和写入保存文件。

我自学成才,一周前才开始学习。我通常可以在网上找到解决问题的方法,但这一次需要很长时间才能完成,所以我请求一些帮助。

的问题是我有这个尝试/除了

f = file("VTSave2.pkl", "rb")
try:
game = load(f)
print "Game has been loaded from save 2."
except IOError:
pass

在一个保存阅读的东西。VTSave2.pkl当前不存在-我正在使用此事实来测试try/except。

虽然我确实得到了适当的错误[Erno 2],但IOError传递器不执行蹲下操作。我得到的不是"取消加载",而是一个退出程序和一个回溯。

我犯了什么愚蠢的错误吗?有什么我应该知道的吗?还有什么我应该提供的信息吗?非常感谢大家抽出时间!

编辑:谢谢!它现在起作用了。由于我有人试图"纠正"代码的格式,当我采用它时,它最终破坏了我的程序,我删除了所有不再与该问题相关的代码,以避免引发错误的清理。谢谢

正确的工作代码:

try:
f = open("VTSave2.pkl", "rb")
game = load(f)
print "Game has been loaded from save 2."
except IOError:
pass

这将引发异常

f = file("VTSave2.pkl", "rb")

你需要把它移到try:之后

如果您仔细阅读回溯,您应该会看到异常是在行号处引发的

旁白:file()已弃用。您应该使用f = open("VTSave2.pkl", "rb")

您的print "Load cancelled."位于else部分,不会像在if中那样执行。

你可能想重新考虑一下。

最新更新