不传递IOError的异常:[Errno 2]

时间:2012-09-24 06:20:33

标签: python python-2.7 ioerror except

我有一个简单的游戏,我正在py 2.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。

虽然我确实得到了相应的错误,[Errno 2],但IOError传球手并没有做深蹲。而不是“加载取消”我得到一个退出程序和追溯。

我犯了愚蠢的错误吗?我还应该知道什么?我还应该提供更多信息吗?非常感谢您的光临!

编辑:谢谢!它现在有效。因为我有人试图“纠正”代码的格式,并且当我采用它时它最终破坏了我的编程,我已经取出了与问题不再相关的所有代码,以避免诱骗错误的清理。谢谢!

正确的工作代码:

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

2 个答案:

答案 0 :(得分:3)

这会引发异常

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

您需要在try:

之后移动它

如果仔细阅读回溯,您应该会看到该行号

引发异常

除此之外:file()已弃用。您应该使用f = open("VTSave2.pkl", "rb")

答案 1 :(得分:0)

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

你可能想要重新考虑它。