在 "except" 块中执行操作是一种好的编码习惯吗?

Is it a good coding practice to perform operations in an "except" block?

如果 "try" 块中的代码失败,是否是纠正 "except" 块中错误的 Pythonic 方法?

我遇到过这两种代码片段:

import os
import random

workdir = str(random.randint(10**11, 10**12-1))
try:
    os.mkdir(workdir)
except FileExistsError:
    workdir = str(random.randint(10**11, 10**12-1))
    os.mkdir(workdir)
print('Created directory ' + workdir)
os.chdir(workdir)
print('Changed to directory ' + os.getcwd())
import os
import random

workdir = str(random.randint(10**11, 10**12-1))
try:
    os.mkdir(workdir)
    print("Directory " , workdir ,  " created") 
except FileExistsError:
    print("Directory " , workdir,  " already exists")

一个比另一个更受欢迎吗?

使用异常实际上是一个 pythonic way.There 的原则,称为 EAFP,代表 'Easier to Ask for Forgiveness than Permission'。您可以阅读更多相关信息 here

第二个代码片段看起来比第一个更好,因为仍有机会生成相同的数字。