You need to enable JavaScript to run this app. 如何编写仅跳过单条出错代码行的try/except异常捕获块
优惠活动
大模型
产品
解决方案
定价
更多

如何编写仅跳过单条出错代码行的try/except异常捕获块

实现方案

你现有代码的问题是将所有os.mkdir()操作放在同一个try代码块中,只要某一步抛出异常,就会直接跳出整个try块执行pass,后续的目录创建操作全部不会运行。要实现跳过出错行继续执行的效果,需要给每个独立的目录创建操作单独配置异常捕获逻辑。


方式1:为每个mkdir操作单独套try/except块

适合目录数量少、命名无统一规律的场景:

import os

try:
    os.mkdir('dir1')
except:
    pass

try:
    os.mkdir('dir2')
except:
    pass

try:
    os.mkdir('dir3')
except:
    pass

try:
    os.mkdir('dir4')
except:
    pass

try:
    os.mkdir('dir5')
except:
    pass

方式2:遍历目录列表批量处理(更推荐)

把所有需要创建的目录名存入列表,循环遍历每个目录时单独做异常捕获,代码简洁易维护,适配批量创建场景:

import os

# 把所有要创建的目录名放在列表里,后续新增目录只需修改这个列表即可
dir_list = ['dir1', 'dir2', 'dir3', 'dir4', 'dir5']

for dir_name in dir_list:
    try:
        os.mkdir(dir_name)
    except:
        # 需要打印报错信息可以放开下方注释
        # print(f"创建目录{dir_name}失败")
        pass

优化建议

建议不要使用裸except语句,最好明确指定需要捕获的异常类型:os.mkdir()在目标目录已存在时会抛出FileExistsError,仅捕获该异常可以避免吞掉权限不足、路径非法等其他异常,方便问题排查:

for dir_name in dir_list:
    try:
        os.mkdir(dir_name)
    except FileExistsError:
        # 仅跳过目录已存在的情况,其他异常会正常抛出
        pass

内容的提问来源于stack exchange,提问作者BloodLord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 05:24:06