今天dota打得爽,文章就來得比較簡單,呵呵~
traceback模組被用來跟蹤異常返回資訊. 如下例所示:
import tracebacktry: 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 tracebacktry: do somethingexcept: 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: blockexcept 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"。推薦使用後者。