异常捕捉
关键字: 异常捕捉异常捕捉问题
traceback.print_exc(1)
这个是个好方法,先写在这里,以供各位观赏.用途不言而喻.
小心捕捉了异常,而让上层看不到是什么问题.还不如不捕捉呢!
如果要捕捉异常,最好是捕捉到什么异常就抛出什么异常,在抛出之前,写日志什么,好方便以后调试.
不然如果想这样抛出异常,上层有时候是看不到的:
try:
pass
except Exception, e:
raise e, "连接数据库失败或者插入数据失败"
外面看到的仅仅是这个错误提示,还不如直接raise e最好了.
对比下面的异常提示:
""""
Traceback (most recent call last):
File "./s_test.py", line 83, in ?
job.notify( "utp", 55, 2,2, "way1_test" )
File "./s_test.py", line 77, in notify
writeDb( data_dict )
File "/home/mon/py/db/writedb.py", line 65, in writeDb
raise e, "连接数据库失败或者插入数据失败"
TypeError: instance exception may not have a separate value
"""
______________________________________________________________________
"连接数据库失败或者插入数据失败"
Traceback (most recent call last):
File "./s_test.py", line 83, in ?
job.notify( "utp", 55, 2,2, "way1_test" )
File "./s_test.py", line 77, in notify
writeDb( data_dict )
File "/home/mon/py/db/writedb.py", line 66, in writeDb
raise e
NameError: global name 'db' is not defined
______________________________________________________________________
第一条看到关键的是"TypeError: instance exception may not have a separate value"
第二条看到关键的是"NameError: global name 'db' is not defined"
第二种情况,就可以看出来,程序出错的位置,和原因.第一条是我用了好长的时间去测试的对象.
最后发现是异常捕捉问题







评论排行榜