python异常处理try的实例小结

 更新时间:2021年10月21日 09:28:30   作者:z天赐  
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。今天通过本文给大家介绍python异常处理try的实例详解,感兴趣的朋友一起看看吧

异常处理

简介

在我们写程序代码的时候,往往会因一个小问题让我们整个程序直接挂掉。

异常处理对我们测试有什么好处,相信做过自动化的同学都知道我们的用例都是一条一条的去执行比如我们程序用例几百条,有一条用例因数据原因导致了程序异常,那么剩下的就会全体停止工作,遇到这样的情况我们应该将这个数据导致的问题抛出来,处理这个异常就可以了。

我们可以使用 tryexcept 的方式来处理异常。

结构

将有可能发生报错的语句放到try:里面,然后使用except来处理异常,每一个try 必须至少有1个except。

如果可能发生报错的语句我们能知道要报哪些异常,except 后需要跟上异常名称

也可以使用万能异常Exception,他可以捕获任意异常

python所有的标准异常类:请看文章末尾处

实例1:处理指定错误异常类型

如果我们知道会报那些错误,那么就可以直接来捕捉处理就好了,但是如果捕捉异常名称不正确,则也会程序报错。

首先我们打印一个未声明/初始化对象 (没有属性)的错误,然后再后面再打印一个正常能被执行的数据

print(aa)
print('bb')

打印结果

Traceback (most recent call last):
  File "C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\111.py", line 6, in <module>
    print(a)
NameError: name 'a' is not defined

显然print("bb")没有被执行,我们此时对我们可能或者已知报错的部分增加try:并且用except 指定NameError as 到f变量,并且打印出这个错误

try:
    print(aa)
except NameError as f:
    print(f)
print('bb')

打印结果

name 'aa' is not defined
bb

 可以看出,程序将报错信息打印了出来,然后执行了print("bb")

假如我是打开一个错误的文件呢?我又不知道打开文件错误的名称,这时候我又怎么处理呢?

try:
    open('ztc.txt','r')
except NameError as f:
    print(f)
print('bb')

打印结果:

实际是输出错误文件,我用Nameerror是不能正确找到该异常名称的

Traceback (most recent call last):
  File "C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\111.py", line 2, in <module>
    open('ztc.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'ztc.txt'

遇到这样的情况请看实例2

实例2 :万能的异常处理

实例1中我们说了,在我们能确定会报什么类型的错误的时候,我们可以指定这个错误类型来处理他,当然在很多时候,我们会遇到很多的未知异常,不可能将所有异常都预知到,那么我们可以直接用万能异常Exception

try:
    open('ztc.txt','r')
except Exception as f:
    print(f)
print('bb')

打印结果:

无论我们try中是任何错误类型的异常,exception都可以来处理他

[Errno 2] No such file or directory: 'ztc.txt'
bb

实例3:try...finally...

try...finally...的意思是,我们程序是否遇到错误,这些代码必须执行

都有哪些场景可以用到?

比如我们链接数据库,要操作数据库,程序报错了或者没报错, 都必须要执行关闭数据库
比如我们打开一个excel或者txt文档,要写入数据,无论报错或者没报错,都必须关闭这个文档

先看一个执行正常的情况

try:
    f = open('ztc.json','r')

finally:
    f.close()
    print('已经关闭')

打印结果

已经关闭

再看看如果打开文件后,还没等文件关闭呢,就报错了

try:
    f = open('ztc.json','r')
    print(aaa)

finally:
    f.close()
    print('已经关闭')

打印结果

Traceback (most recent call last):
  File "C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\111.py", line 3, in <module>
    print(aaa)
NameError: name 'aaa' is not defined
已经关闭

看上面代码,显然程序打印print(aaa)的时候报错了,但是依然将打开的文件给关闭了

附录:

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
SystemExit Python 解释器请求退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
KeyboardInterrupt 用户中断执行(通常是输入^C)
LookupError 无效数据查询的基类
IndexError 序列中没有没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

到此这篇关于python异常处理try的文章就介绍到这了,更多相关python异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于wxPython的GUI实现输入对话框(2)

    基于wxPython的GUI实现输入对话框(2)

    这篇文章主要为大家详细介绍了基于wxPython的GUI实现输入对话框的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Django文件存储 默认存储系统解析

    Django文件存储 默认存储系统解析

    这篇文章主要介绍了Django文件存储 默认存储系统解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python树莓派红外反射传感器

    python树莓派红外反射传感器

    这篇文章主要为大家详细介绍了python树莓派红外反射传感器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 详解Python如何制作自动发送微信的程序

    详解Python如何制作自动发送微信的程序

    这篇文章主要介绍了如何利用Python中的apscheduler和pyautogui模块,制作一个自动发送微信的程序。感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-01-01
  • python opencv之分水岭算法示例

    python opencv之分水岭算法示例

    这篇文章主要介绍了python opencv之分水岭算法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python打印三角形九九乘法表代码

    Python打印三角形九九乘法表代码

    大家好,本篇文章主要讲的是Python打印三角形九九乘法表代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Python实现抓取腾讯视频所有电影的示例代码

    Python实现抓取腾讯视频所有电影的示例代码

    这篇文章主要为大家介绍了如何使用python实现抓取腾讯视频所有电影,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 如何实现删除numpy.array中的行或列

    如何实现删除numpy.array中的行或列

    如何实现删除numpy.array中的行或列?今天小编就为大家分享一篇对删除numpy.array中行或列的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 使用Django搭建web服务器的例子(最最正确的方式)

    使用Django搭建web服务器的例子(最最正确的方式)

    今天小编就为大家分享一篇使用Django搭建web服务器的例子(最最正确的方式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • pytorch DataLoader的num_workers参数与设置大小详解

    pytorch DataLoader的num_workers参数与设置大小详解

    这篇文章主要介绍了pytorch DataLoader的num_workers参数与设置大小详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论