Python 有异常的问题

Python Issue with exceptions

我在使我的错误处理工作时遇到了一些问题我已经用尽了我的搜索和挖掘,有人可以帮助我吗? 基本上,我试图检查路径是否存在,如果它确实设置 file_location 并继续前进,如果用户无权创建文件夹,则创建目录,在用户我的文档中创建目录。

一切正常,但如果我尝试强制错误使用我的文档,但是,我会收到错误消息,所以我不能 100% 确定我的 except 是否会被执行。

try:
    if  os.path.exists(project_dir):
        file_location = (project_dir)
    else:
        os.makedirs(project_dir)
        file_location = (project_dir)
except OSError as exc:
    if exc.errno != errno.EEXIST:
         raise
    pass
    os.makedirs(user_dir)
    file_location = (user_dir)

为清楚起见稍微更改程序流程,并尝试保存异常处理程序,以备程序严重失败并需要警告用户或完全更改程序流程(异常情况)时使用。当系统遇到问题它无法解决

时,异常作为一种协议存在

如果你必须跳出飞机,你最不想知道的就是没有可用的降落伞。所以在处理异常的时候用os.path.exists()告诉你一个路径是否有效。最安全的默认值是当前目录,可通过使用 . 作为路径访问。但如果没有,您应该能够假设用户目录已经存在,以防您的代码确实需要崩溃和燃烧。 mkdir 在你必须处理异常之前,而不是之后。

还要确保在 python 中正确缩进。空格也有助于捕获错误,所以当它使代码更易于阅读时,不要害怕使用换行符。您的 try 子句需要额外的缩进级别:

try:
    # simplify the if statement to stop repeating yourself
    if not os.path.exists(project_dir):
        os.makedirs(project_dir) 
    file_location = project_dir

except OSError as exc:
    if exc.errno != errno.EEXIST:
        raise # reraise the current exception

    if os.path.exists(user_dir):
        file_location = user_dir
    else: # FUBAR. Sound sirens immediately and try everything to keep the file somewhere in memory before failing.
        print("[ERROR] {} was inaccessible.\nWhile attempting to recover, {} did not exist so files could not be backed up."
            .format(project_dir, user_dir))
        raise

绝不允许异常处理程序的失败发生。这是一个灾难性的事件,您应该预料到剩下的唯一选择就是崩溃到桌面。一种异常可以被捕获并从中恢复。两个或三个嵌套异常意味着您的计算机可能已经获得感知并开始推翻其数字束缚(或者您需要认真思考为什么要处理异常)。