Python异常处理
Posted despatch
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python异常处理相关的知识,希望对你有一定的参考价值。
2019-05-28
Python中的异常处理
需求:
当程序遇到问题时不让程序结束,而越过错误继续向下执行
try......except.....else
格式: try: 语句t except 错误表示码 as e: 语句2 ....... except 错误表示码 as e: 语句n else: 语句e
注意:
else语句可有可无
作用:
用来检测try语句块中的错误,从而让except语句捕获错误信息并处理
逻辑:
当程序执行到try-except-else语句时
1、如果当try语句执行出现错误,会匹配第一个错误码,如果匹配上就执行对应的"语句"
2、如果try语句执行出现错误,没有匹配的异常,错误将会将提交到上一层的try语句。或者到程序的最上层。
3、如果try语句执行没有出现错误,执行else下的语句else/得存在
使用execpt而不使用任何的错误类型
使用execpt带着多种异常
try:
pass
except(NameError,ZreoDivisionError)
print("出现了NameError或ZreoDivisionError")
特殊的一些错误:
1、错误其实就是class(类),所有的错误都继承自BaseException,所以在捕获的时候,它不回来该类型的错误,还把子类一网打尽。
2、跨越多层调用,main调用了func2,func2调用了func1,func1出现了错误,这是只要main捕获到了就可以处理。例如以下:
def func1(num):
print(1/num)
def func2(num):
func1(num)
def main():
func2(2)
main()
写代码时内出现错误,怎么检测异常
try.....except.......finally
格式:
try:
语句1
except 错误表示码 as e:
语句2
.......
except 错误表示码 as e:
语句n
finally:
语句f
作用:语句1无论是否有错误都将继续执行最后的语句f
断言:
def func(num,div):
assert(div !=0),"div不能为0"
return num/div
print(func(10,0))
常见错误:
Name Error 变量没定义
Systax Error 语法错误
IO Error 文件错误
Zero DivisionError 10/0,除零错误
Value Error 值错误,例如a = int(‘aa’)
keyboard Interrupt 强制终止程序产生,ctrl+c强制终止程序运行
以上是关于Python异常处理的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 多处理进程中运行较慢的 OpenCV 代码片段