try-except之后“ else”阻止的目的是什么?

时间:2019-01-10 07:37:22

标签: python python-3.x

在学习python时,我读了关于我的python的问题,但我不明白为什么要用python完成这种实现。

情况1 :抛出异常,并且sd设置为45

try:
    raise ValueError()
    sd = 45
except(OSError): 
    sd = 50
else:
    sd = 23

情况2 :异常由except处理,并且sd设置为50

try:
    raise ValueError()
    sd = 45
except(ValueError): 
    sd = 50
else: 
    sd = 23

情况3 :未发生错误,则将执行其他操作,并且sd设置为23

try:
    sd = 45
except(ValueError): 
    sd = 50
else: 
    sd = 23

我们始终希望我们的代码能够正常工作,并且如果引发错误,则应该对其进行处理。但是为什么else在这里发挥作用,如果try块中的代码没有错误,则运行此代码。

请建议我是否误解,错过或误导了

1 个答案:

答案 0 :(得分:1)

我建议您检出https://docs.python.org/3/tutorial/errors.html-这是整个章节:

  

try…except语句具有可选的else子句,当存在该子句时,必须遵循所有except子句。对于try子句未引发异常的必须执行的代码而言,这很有用。 ....

@Edit 要详细说明-else的意义是当您执行某些可能会可能错误的操作(例如,打开可能不存在),则可以将利用该文件的代码放在else语句中,而不是放在try内,从而避免捕获try语句未引发的异常(即完全与打开文件无关的东西破坏了文件的使用范围?)