可以在python try-except中有一个else块语句吗?

时间:2017-02-09 02:31:40

标签: python django try-except

我正在尝试编写订阅列表模块。所以,我有一个声明,根据用户的电子邮件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函数?

1 个答案:

答案 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