首页 > 解决方案 > Try 块捕获错误的异常

问题描述

我正在尝试创建一个文件夹,处理不同的错误(FileExistsError如果文件夹已经存在并且OSError文件夹的名称包含非法字符),但无论是哪个错误,Python 似乎总是在捕获错误时选择第一个 except 块并且它们的顺序。

有什么我不明白的吗?

import os
from pathlib import Path

def generateSetup(name) :
    dir_path = os.path.dirname(os.path.realpath(__file__))
    if not Path(dir_path + '/setups').exists() : os.mkdir(dir_path + '/setups')

    try : os.mkdir(dir_path + '/setups/' + name)
    except FileExistsError : print('The file already exists')
    except OSError : print('The name contains illegal characters')

stp_name = input('Enter your setup\'s name :')
generateSetup(stp_name)

标签: pythonpython-3.xpython-os

解决方案


您的代码没有任何问题。它按预期正常工作,捕获FileExistsError目录是否已存在或OSError目录名称是否包含无效符号。所以我认为问题出在你测试代码的方式上

>>> dloc='tmp/\/b'
>>> try:
...     os.mkdir(dloc)
... except FileExistsError:
...     print('The file already exists')
... except OSError:
...     print('The name contains illegal characters')
... 
The name contains illegal characters

推荐阅读