【问题标题】:Exception not passing IOError: [Errno 2]异常未通过 IOError:[Errno 2]
【发布时间】:2012-09-24 06:20:32
【问题描述】:

我正在使用 py 2.7 开发一个简单的游戏,它使用 pickle 来读取和写入保存文件。

我是自学成才,大约一周前才开始学习。我通常可以在网上找到我的问题的解决方案,但是这个解决方案花费的时间太长了,所以我请求一些帮助。

问题是我有这个try/except

        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

【问题讨论】:

    标签: python python-2.7 ioerror except


    【解决方案1】:

    这引发了异常

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

    你需要把它移到try:之后

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

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

    【讨论】:

    • 知道了!谢谢!那解决了它!非常感谢,你帮助得这么快。祝你有美好的一天。 :3
    【解决方案2】:

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

    你可能想重新考虑它。

    【讨论】:

    • 其实,这部分工作正常。这是为了捕捉除“y”之外的确认,即“您确定要使用保存 2 覆盖当前游戏吗?(y/n):n 加载已取消。”那是来自正在运行的程序。我还添加了一个打印到 except 以详细说明“找不到文件”,以区别于用户取消该功能。不过还是谢谢你的建议! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    相关资源
    最近更新 更多