包含try...except...在3.x版本中與2.x版本中的用法差別。python
一、先說差別:函數
在2.x的python中用法實例:spa
1 try: 2 ...... 3 except Exception,e: 4 raise e
在3.x的python中用法實例:code
1 try: 2 ...... 3 except Exception as e: 4 raise e
好啦,二者差別通過對比一目瞭然(感受這裏說格式更好一點,可是格式與用法的成分都有,算了,就這樣吧)。啦啦啦~對象
二、再說和異常相關的:blog
與Python異常相關的關鍵字
1 關鍵字 關鍵字說明
2 raise 拋出/引起異常 3 try/except 捕獲異常並處理 4 pass 忽略異常 5 as 定義異常實例(except IOError as e) 6 finally 不管是否出現異常,都執行的代碼 7 else 若是try中的語句沒有引起異常,則執行else中的語句的語句沒有引起異常,則執行else中的語句
三、使用try和except語句來捕獲異常io
1 try: 2 block 3 except [exception,[data…]]: 4 block
6 try: 7 block 8 except [exception,[data...]]: 9 block 10 else: 11 block
該種異常處理語法的規則是:class
· 執行try下的語句,若是引起異常,則執行過程會跳到第一個except語句。變量
· 若是第一個except中定義的異常與引起的異常匹配,則執行該except中的語句。搜索
· 若是引起的異常不匹配第一個except,則會搜索第二個except,容許編寫的except數量沒有限制。
· 若是全部的except都不匹配,則異常會傳遞到下一個調用本代碼的最高層try代碼中。
· 若是沒有發生異常,則執行else塊代碼。
一個 try...except 塊能夠有一條 else 子句,就像 if 語句。若是在 try 塊中沒有異常引起,而後 else 子句被執行。
四、採用traceback(跟蹤)模塊查看異常
發生異常時,Python能「記住」引起的異常以及程序的當前狀態。Python還維護着traceback(跟蹤)對象,其中含有異常發生時與函數調用 堆棧有關的信息。記住,異常可能在一系列嵌套較深的函數調用中引起。程序調用每一個函數時,Python會在「函數調用堆棧」的起始處插入函數名。一旦異常 被引起,Python會搜索一個相應的異常處理程序。若是當前函數中沒有異常處理程序,當前函數會終止執行,Python會搜索當前函數的調用函數,並以 此類推,直到發現匹配的異常處理程序,或者Python抵達主程序爲止。這一查找合適的異常處理程序的過程就稱爲「堆棧展轉開解」(Stack Unwinding)。解釋器一方面維護着與放置堆棧中的函數有關的信息,另外一方面也維護着與已從堆棧中「展轉開解」的函數有關的信息。
五、經常使用異常名稱:
1 異常名 描述 2 AttributeError 調用不存在的方法引起的異常 3 EOFError 到文件末尾引起的異常 4 ImportError 導入模塊出錯引起的異常 5 IndexError 列表越界引起的異常 6 IOError I/O操做引起的異常,如打開文件出錯等 7 KeyError 使用字典中不存在的關鍵字引起的異常 8 NameError 使用不存在的變量名引起的異常 9 TabError 語句塊縮進不正確引起的異常 10 ValueError 搜索列表中不存在的值引起的異常 11 ZeroDivisionError 除數爲零引起的異常