python第三方庫系列之六--traceback庫

來源:互聯網
上載者:User

今天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"。推薦使用後者。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.