python捕获函数异常 python捕获错误

python中主线程怎样捕获子线程的异常最近因为别的需求 , 写了一个模块,似乎在这里能用得上:
其中的 example.py :
#!/usr/bin/env python
# coding = utf-8
"""
example
"""
__author__ = 'Rnd495'
from time import sleep
from ChatProcess import Chatroom
class Echo(Chatroom):
"""
Echo
"""
def response(self, data):
if data.startswith('sleep'):
sec = float(data[6:])
sleep(sec)
return 'wake up after %dms' % (sec * 1000)
elif data:
return data
else:
self.stop()
return 'goodbye'
if __name__ == '__main__':
from ChatProcess import TimeoutError, ProcessError
print 'process 01:'
e = Echo.create_process(lifetime=1).start()
print e.chat('Hello world!'), e.remain
print e.chat('sleep:0.1'), e.remain
print e.chat(''), e.remain
print ''
print 'process 02:'
e = Echo.create_process(lifetime=1).start()
try:
print e.chat('Hello world!'), e.remain
print e.chat('sleep:1.0'), e.remain
print e.chat(''), e.remain
except TimeoutError, error:
print 'error:', error
print ''
print 'process 03:'
e = Echo.create_process(lifetime=1).start()
try:
print e.chat('Hello world!'), e.remain
print e.chat('sleep:not a num'), e.remain
print e.chat(''), e.remain
except ProcessError, error:
print 'error:', error
运行结果为:
process 01:
【python捕获函数异常 python捕获错误】Hello world! 0.773000001907
wake up after 100ms 0.549000024796
goodbye 0.547000169754
process 02:
Hello world! 0.868000030518
error: TimeoutError
process 03:
Hello world! 0.868000030518
error: ('Error occurred on loop', ValueError('could not convert string to float: not a num',))
在其中的 process01 中,主进程捕获了 超时
在其中的 process02 中 , 主进程捕获了 子进程的错误
不知道你能不能用得上
Python之异常处理(try的基本用法) #计算机# #程序员# #python# #代码# #IT#
程序在运行的时候,如果python解释器遇到 不是语法错误 时,会停止程序的执行 , 并且抛出一些错误的信息进行提示,这就是异常 。
方式try-except语句捕获所有发生的异常。但这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息 。因为它捕获所有的异常,常用于函数最外层进行捕捉未知异常 。
1)情况1
2)情况2
3)情况3
当在try块中抛出一个异常 , 立即执行finally块代码 。
finally块中的所有语句执行后,异常被再次触发,并执行except块代码 。
在不确定异常是哪个的情况下,常用的except的异常有: Exception、BaseException。
关注我,坚持每日积累一个技巧,长期坚持,我们将会不断进步 。
python常见异常和异常捕获NameError错误 , 比如:
结果:
SyntaxError错误,比如:
结果:
ValueError错误,比如:
结果:
IndexError错误,比如:
结果:
IndentationError错误 , 也就是缩进错误,比如:
结果:
KeyError错误,比如:
结果:
AttributeError错误,属性错误,比如:
结果:
对特定的错误进行捕获  , 用as可以自定义自己想要的提示信息,比如:
结果:
捕获多个异常  , 需要注意的是捕获多个异常时要用(),因为except后面只能接一个参数,比如:
结果:
捕获全部异常时,可以用Exception,比如:
结果:
自定义错误信息,比如:
结果:

推荐阅读