文章目录
- 背景描述
- 首先熟悉一下python异常处理的几个关键字
- 摄像头USB断开异常
- 获取异常详细信息
背景描述
在摄像头运行的时候,有时候会遇到一些错误,比如帧传输错误引起的程序结束,
但更为严重的是摄像头USB线的断连,
如何检测这种不同严重程度的错误并对错误进行相应的处理,是我们需要考虑的
如果摄像头出现问题,如何检测出这是软掉线(如帧传输错误)还是硬掉线(USB因外力或震动接触不良)呢?
有没有办法通过对报错类型的分辨达到我们对异常结果检测的目的呢?
首先熟悉一下python异常处理的几个关键字
pass 什么都不做,按照程序正常流程运行
else 无异常情况下运行(如果捕获到异常就不执行)
finally 无论怎么都要运行
同样,在循环内使用异常捕获语句(try…except),和将循环应用在异常捕获语句(try…except)中,又可能会产生不同的效果。。
在循环中合理使用continue、break也能使程序产生不同结果。。。
获取异常信息:
try:
...
except Exception as e:
error=str(e)
print(error)
except: 捕捉所有(其他)异常类型
except name: 只捕捉特定的异常
except name,value: 捕捉所有的异常和其额外的数据(或实例)
except (name1,name2) 捕捉任何列出的异常
except (name1,name2),value: 捕捉任何列出的异常,并取得其额外数据
else: 如果没有引发异常,就运行
finally: 总是会运行此代码块,无论是否发生异常
except:用在想不到异常情况,在except:前面可以定义可以想到的异常:except name1: except name2:
raise: 手动在代码中接触发异常。
摄像头USB断开异常
打印异常信息为:
Exception: Frame didn't arrived within 5000
那么,我们该如何指定捕获它呢?
获取异常详细信息
通过代码:
import traceback
try:
1/0
except Exception as e:
traceback.print_exc()
貌似打印出来啥也没有啊??
哦,还是有的,它把之前一旦报错就结束程序的信息给打印出来了。。
那么,解决方案就是,将捕捉runtime error后处理设定标记,跳出循环,重新配置,其余继续在本循环内运行?