python捕获异常后处理_python异常捕获处理
一、异常处理
在程序运行过程中,总会遇到各种各样的错误。程序一旦出错就停止运行了,此时就需要捕捉异常,通过捕捉到的异常,我们再去做对应的处理
写一个函数,实现除法运算
def calc(a,b):
return a/b
print(calc(5,1))#调用,没有错误,结果是5.0
>>> 5.0
print(calc(5,0))#再次调用,这时候就不对了,因为被除数不能为0,下面报了一堆错,程序停止运行了
>>> ZeroDivisionError: division by zero
这个时候我们就需要捕捉异常了,如果除数是0的话,就提示用户传入的参数不对,重新传入。
捕捉异常使用try....except....关键字,就是你在写代码的时候,先要考虑到这段代码可能会出现什么样的错误,然后做对应的处理,try里面就是包含你做处理的代码,except里面就是出了某种错误的时候,我怎么去处理,下面我们改下代码,捕捉异常
def calc(a, b):
try:
res = a / b
except ZeroDivisionError as e: # 如果是除数为0的错误,就返回除数不能为0,这个as e代表把返回错误的信息赋给e
return '除数不能为0!'
return res # 这个是如果没有这个异常的话,就返回结果
print(calc(5, 0)) # 这样再调用就不会出来错误了,就返回除数不能为0这个了。
上面就是捕捉异常,当然上面的只能捕捉到除数为0的错误,如果有别的错误就捕捉不到了;还有一个finally的用法,就是不管出不出异常都执行;try还有一个可以捕捉所有异常,还有else的用法,就是没出异常的时候怎么办,下面用代码来解释
def calc(a, b):
try: # 捕捉异常
res = a / b
except ZeroDivisionError as e:
return '除数不能为0!'
except KeyError as e: # 捕捉KeyError这个异常,当然这段代码没用到字典,所以不会有keyerror这个错误,我只是举个例子
return 'keyerror错误'
except Exception as e: # 这个是捕捉所有的异常,不管你有什么异常都可以捕捉到
print('其他异常')
return e # 返回错误信息
【python捕获异常后处理_python异常捕获处理】else: # 这个else和上面的try对应的,也就是不出异常的话走这里
print('没有出异常')
return res
finally: # 这个finally是不管这个段代码有没有出异常都走它
print('出没出异常都走我这里')
print(calc(5, 0)) # 出除数异常了,会返回除数不能为0!和执行finally里面的代码
print(calc(5, 1)) # 这个没有出异常,就会走else里面的东西,返回结果,也会执行执行finally里面的代码
print(calc(5, 's')) # 这个也走异常了,除数是字符串,肯定不能除,就走那个捕捉所有异常的代码了,也会执行执行finally里面的代码
二、常见的一些异常信息
AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError:输入/输出异常,一般是无法打开文件
ImportError: 无法导入模块或包,一般是路径问题或名称错误
IndentationError:代码没有正确对齐,属于语法错误
IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
KeyError:试图访问字典里不存在的键
KeyboardInterrupt:Ctrl+C被按下
NameError:使用一个还未被赋予对象的变量
SyntaxError: 语法错误
TypeError: 传入对象类型与要求的不符
UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
ValueError: 传入一个调用者不期望的值,即使值的类型是正确的
注:本文摘自http://www.nnzhp.cn/archives/146
推荐阅读
- python捕捉全部异常_python异常捕捉以及处理
- python|python 异常之捕获、处理
- python异常捕获排除指定类型异常_Python异常捕获与处理及自定义异常
- python捕获异常并提示_python 异常捕捉并处理
- 中文word2vec的python实现_基于Word2Vec的相似度计算(python)-Go语言中文社区
- word2vec|word2vec python实现_用python实现gensim的word2vec模型计算句子相似度
- python根据词向量计算相似度_如何使用gensim的word2vec模型和python计算句子相似度...
- python|python opencv库_Python如何安装opencv库
- python灰度图片格式_[Python图像处理] 十五.图像的灰度线性变换
- python调用opencv例子_Opencv调用深度学习模型