我正在尝试编写订阅列表模块。所以,我有一个声明,根据用户的电子邮件ID,可能会抛出索引超出范围错误。如果是这样,我希望程序做一些事情,如果不是,我希望程序完全不同。我该怎么做?目前我的代码试图无关地添加所有用户并使程序崩溃。我最理想的是这样:
try:
check_for_email_id.from_database
except IndexError:
create.user_id.in_database
user.add.to.subscribe_list
else:
user.add.to.subscribe_list
我需要在此处添加一个块,如果没有IndexError
,则省略“do something
”部分并执行else
部分。 Python是否为此提供了内置选项?我可以在Try-Except语句中使用if-else块吗?
而且,避免两次编写user.add.to.subscribe_list
代码的好方法是什么?除了创建一个新的user_add函数?
答案 0 :(得分:1)
是的,python try / except(else / finally)语句中的else
恰恰就是:如果没有例外,你想要发生 的东西:
import random
try:
1 / random.randrange(2)
except Exception as e:
print(e)
else:
print('we succeeded!')
finally:
# always prints
print('we just tried to do some division!')
在回答第二个问题时,看起来你真正想要的是使用finally
子句:
try:
check_for_email_id.from_database
except IndexError:
create.user_id.in_database
finally:
# this gets called if there was an error or not
user.add.to.subscribe_list