IT运维笔记


python第三方库系列之traceback库

traceback模块被用来跟踪异常返回信息. 如下例所示: import traceback try: raise SyntaxError, "traceback test" except: traceback.print_exc() 打印出以下结果: Traceback (most recent call last): File "H:\PythonWorkSpace\Test\src\TracebackTest.py", line 3, in <module> raise SyntaxError, "traceback test" SyntaxError: traceback test 或者: import traceback try: do something except: print traceback.format_exc() log.error(traceback.format_exc()) traceback.print_exc()和print traceback.format_exc()是一样的,只不过traceback.print_exc()打印到屏幕,便于调试,当然也可以写到文件。 在python中,标准异常有很多: 1. NameError:尝试访问一个未申明的变量 2. ZeroDivisionError:除数为0 3. SyntaxError:语法错误 4. IndexError:索引超出范围 5. KeyError:字典关键字不存在 6. IOError:输入输出错误 7. AttributeError:访问未知对象属性 8. ValueError:数值错误 9. TypeError:类型错误 10. AssertionError:断言错误 11. Exception:常规错误的基类 ...... 在这些标准异常中,Exception是常规错误的基类,所以一般用这个就可以捕获错误: try: block except Exception, e: log.error("except, %s" % str(e)) 有人可能会问了,except Exception, e是什么意思? 那我告诉你:except语句跟着两个东西,前面是异常的类型,后面的是异常对象,包含了一些异常信息。 那又有人可能会问了,“except Exception as e”里的“as”是什么意思? 那我告诉你:as是定义异常的实例(例如except IOError as e) 那又有人可能会问了,“except Exception, e”和“except Exception as e”是什么关系? 那我告诉你:老版本的Python,except语句写作"except Exception, e",Python 2.6后应写作"except Exception as e"。推荐使用后者