温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python异常处理try的方法教程

发布时间:2021-10-21 10:44:48 来源:亿速云 阅读:169 作者:iii 栏目:开发技术

本篇内容介绍了“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)发生异常来通知退出
SystemExitPython 解释器请求退出
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尚未实现的方法
SyntaxErrorPython 语法错误
IndentationError缩进错误
TabErrorTab 和空格混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode 相关的错误
UnicodeDecodeErrorUnicode 解码时的错误
UnicodeEncodeErrorUnicode 编码时错误
UnicodeTranslateErrorUnicode 转换时错误
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为(runtime behavior)的警告
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

“python异常处理try的方法教程”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI