您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python异常处理中容易犯得错误总结

51自学网 2021-10-30 22:29:02
  python
这篇教程Python异常处理中容易犯得错误总结写得很实用,希望能帮到您。

Python异常处理机制

如果try异常处理中存在finally,finally中的代码总会得到执行

下面例子只是作为演示,不用去纠结业务逻辑

容易犯的错误1

看下面的代码,写出输出结果

def dig_dig1():    while True:        print("I'm in while loop")        try:            print("I'm in try")            raise EOFError        except IOError:            print("IOEoor")        finally:            print("I'm in finally")            breakdig_dig1()

原以为会输出的结果:

I'm in while loopI'm in tryI'm in finallyEOFErrorProcess finished with exit code 1

运行结果

I'm in while loopI'm in tryI'm in finallyProcess finished with exit code 0
  1. 如果异常处理中存在finally, finally总会被执行;
  2. 那么在执行finally之前,try中的产生的异常将会被临时保存起来,当finally的代码执行完成后,再抛出异常;
  3. 但当finally中存在raise或return或break时, try中的异常将会被抛弃。

容易犯的错误2

看下面的代码,写出输出结果

def dig_dig2(index):    try:        print("I'm in try")        if index < 0:            raise IndexError        else:            return index    except IndexError:        print("I'm in except")        return "except"    finally:        print("I'm in finally")        return "finally"print(dig_dig2(12))

原以为会输出的结果:

I'm in try12

运行结果

I'm in tryI'm in finallyfinallyProcess finished with exit code 0
  1. 如果异常处理中存在finally, finally总会被执行。
  2. 如果在try块语句中存在return的同时又存在finally块语句,那么将会在执行try块语句中return语句之前去执行finally语句块,然后再回来执行try块语句中return语句。
  3. 但是例子中在finally块语句中存在return语句,整个函数已结束,所以try块语句中return语句将永远得不到执行。

总结

一般情况下,如果异常处理中存在finally, finally总会被执行。但是,存在以下情况就需要注意:

  1. 在执行finally之前,try中的产生的异常将会被临时保存起来,当finally的代码执行完成后,再抛出异常; 但当finally中存在raise或return或break时, try中的异常将会被抛弃。
  2. 如果在try块语句中存在return的同时又存在finally块语句,那么将会在执行try块语句中return语句之前去执行finally语句块,然后再回来执行try块语句中return语句。但是在finally块语句中存在return语句,整个函数已结束,所以try块语句中return语句将永远得不到执行。

以上就是Python异常处理中容易犯得错误总结的详细内容,更多关于python 异常处理的资料请关注51zixue.net其它相关文章!


python实现csdn全部博文下载并转PDF
这三个好用的python函数你不能不知道!
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。