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