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异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python内建模块struct实例详解

    Python内建模块struct实例详解

    这篇文章主要介绍了Python内建模块struct实例详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Python实战之多种音乐格式批量转换

    Python实战之多种音乐格式批量转换

    Pydub是一个基于ffmpeg的Python音频处理模块,封装了许多ffmpeg底层接口,因此用它来做音乐歌曲文件格式转换会非常方便。今天给大家介绍它的音乐文件格式转换功能,几乎支持所有音乐音频格式,需要的可以参考一下
    2022-06-06
  • 在python中实现导入一个需要传参的模块

    在python中实现导入一个需要传参的模块

    这篇文章主要介绍了在python中实现导入一个需要传参的模块,具有很好的参考价值,希望可以给大家一个参考,以后在遇到这种的情况的时候,知道如何应对
    2021-05-05
  • Python中对象迭代与反迭代的技巧总结

    Python中对象迭代与反迭代的技巧总结

    这篇文章将通过实例给大家分享Python中对象迭代与反迭代的技巧,对大家学习或者使用python具有一定的参考借鉴价值。有需要的下面来一起看看吧。
    2016-09-09
  • 理解Python中函数的参数

    理解Python中函数的参数

    这篇文章主要介绍了Python中函数的参数,掌握函数中的参数传递在任何一门语言的学习过程当中都是基本功,需要的朋友可以参考下
    2015-04-04
  • Python Numpy运行报错IndexError与形状不匹配的问题解决办法

    Python Numpy运行报错IndexError与形状不匹配的问题解决办法

    在使用Numpy进行数据处理和科学计算时,IndexError和形状不匹配(Shape Mismatch)是常见的错误类型,这些错误通常发生在数组索引操作、数组运算或数组重塑时,本文将通过一个具体的例子来详细分析这些错误的原因和解决办法,需要的朋友可以参考下
    2024-07-07
  • python绘制直方图的方法

    python绘制直方图的方法

    这篇文章主要为大家详细介绍了python绘制直方图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • jupyter lab的目录调整及设置默认浏览器为chrome的方法

    jupyter lab的目录调整及设置默认浏览器为chrome的方法

    这篇文章主要介绍了jupyter lab的目录调整及设置默认浏览器为chrome的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python中获得当前目录和上级目录的实现方法

    python中获得当前目录和上级目录的实现方法

    这篇文章主要介绍了python中获得当前目录和上级目录的实现方法,需要的朋友可以参考下
    2017-10-10
  • 对python多线程中Lock()与RLock()锁详解

    对python多线程中Lock()与RLock()锁详解

    今天小编就为大家分享一篇对python多线程中Lock()与RLock()锁详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论