本實驗任務主要對Python異常進行一些基本操做,經過完成本實驗任務,要求學生熟練掌握Python異常的基本操做。並對異常的基本操做進行整理並填寫工做任務報告。python
一、掌握Python異常的捕獲程序員
二、掌握Python異常的處理數據庫
Ubuntu16.0四、Python2.7vim
異常便是一個事件,該事件會在程序執行過程當中發生,影響了程序的正常執行。spa
通常狀況下,在Python沒法正常處理程序時就會發生一個異常。操作系統
異常是Python對象,表示一個錯誤。對象
當Python腳本發生異常時咱們須要捕獲處理它,不然程序會終止執行。事件
步驟一、環境準備資源
右擊Ubuntu操做系統桌面,從彈出菜單中選擇【Open in Terminal】命令打開終端。io
經過【cd /home】切換到home目錄下。【ls】查看該目錄下的全部內容。
【mkdir except】在home目錄下建立except文件夾。
步驟二、捕捉異常
【cd except】切換到except目錄下,【vim except1.py】回車後建立並編輯名爲except1的Python文件
回車後進入編輯框內,按鍵盤【i】進入編輯狀態,輸入以下程序。
分別獲取用戶輸入的x與y值,並進行除法運算。
編輯完畢後,按【esc】退出編輯狀態,【:wq】保存並退出編輯框,【python except1.py】執行except1的Python文件。
分別輸入第一個數字6,第二個數字0。回車後報ZeroDivisionError異常,該異常在除法或者模除操做的第二個參數爲0時引起。
再次進入except1.py文件編輯狀態,修改程序。
再次運行except1.py程序。再次輸入第一個數字6,第二個數字0。回車後不報異常,並將except後的打印語句輸出。根據結果證實try/except將異常捕捉並處理
若是用戶在提示符後面輸入非數字類型的值,就會產生另一個異常。
運行except1.py程序,輸入第一個數字6,第二個值爲’shiyanbar’,回車後報TypeError異常。
由於except子句只尋找ZeroDivisionError異常,此次的錯誤就溜過了檢查並致使程序終止。
捕捉這個異常,能夠直接在同一個try/except語句後面加上另外一個except字句。
再次進入except1.py文件編輯狀態,修改程序。
再次運行except1.py程序。再次輸入第一個數字6,第二個值爲’shiyanbar’。回車後不報異常,並將except後的打印語句輸出。
固然這種解決辦法能夠捕獲異常,但產生的問題是程序中會增長一大堆可能錯誤狀況的except,會讓代碼至關的難讀。
若是須要用一個塊解決多個類型異常,能夠將它們做爲元組列出。
再次進入except1.py文件編輯狀態,修改程序便可。
若是想讓程序繼續運行,可是又由於某種緣由想記錄下錯誤。
再次進入except1.py文件編輯狀態,修改程序。程序會打印異常,而且程序會繼續運行。
再次運行except1.py程序。再次輸入第一個數字6,第二個值爲0。回車後不報異常,並將異常的信息輸出。
就算程序中能處理好幾種類型的異常,但有些異常仍是會從眼皮下溜走。
再次運行except1.py程序。再次輸入第一個數字6,第二個值爲空。回車後報SyntaxError異常。
能夠用一段代碼捕捉全部異常,能夠在except子句中忽略全部的異常類。
再次進入except1.py文件編輯狀態,修改程序。
像這樣捕捉全部的異常是危險的,由於會隱藏程序員未想到而且未作好準備處理的錯誤等。這時使用except Exception,e會更好些。
在有些狀況中,沒有異常發生執行一段代碼是頗有用的,能夠像對條件和循環語句那樣,給try/except添加個else字句。
再次進入except1.py文件編輯狀態,修改程序。
這裏的循環只在沒有異常發生引起的狀況下才會退出(由else字句中的break語句退出),只要有錯誤發生,程序會不斷要求從新輸入,並將異常信息打印。
再次運行except1.py程序。
再次輸入第一個數字6,第二個值爲0。回車後報’integer division or modulo by zero’異常。
再次輸入第一個數字6,第二個值爲’shiyanbar’,回車後報’unsupported operand type(s) for /: ‘int’ and ‘str’’。
再次輸入第一個數字6,第二個值爲3,獲得除結果。
最後,finally字句能夠用來在可能的異常後進行清理,和try聯合使用。
經過【vim except2.py】建立並編輯名爲except2的Python文件。編輯以下代碼。
在程序中,finally字句確定會被執行,無論try字句中是否發生異常。
【python except2.py】運行python文件,在程序崩潰以前,對於變量x的清理完成。
由於使用del語句刪除一個變量是很是不負責的清理手段,全部finally子句用於關閉文件或關閉因系統錯誤而沒法正常釋放的資源。好比文件關閉,釋放鎖,把數據庫鏈接返還給鏈接池等