Python異常捕獲與處理

1、任務描述

  本實驗任務主要對Python異常進行一些基本操做,經過完成本實驗任務,要求學生熟練掌握Python異常的基本操做。並對異常的基本操做進行整理並填寫工做任務報告。python

2、任務目標

一、掌握Python異常的捕獲程序員

二、掌握Python異常的處理數據庫

3、任務環境

Ubuntu16.0四、Python2.7vim

4、任務分析

  異常便是一個事件,該事件會在程序執行過程當中發生,影響了程序的正常執行。spa

  通常狀況下,在Python沒法正常處理程序時就會發生一個異常。操作系統

  異常是Python對象,表示一個錯誤。對象

  當Python腳本發生異常時咱們須要捕獲處理它,不然程序會終止執行。事件

5、任務實施

步驟一、環境準備資源

  右擊Ubuntu操做系統桌面,從彈出菜單中選擇【Open in Terminal】命令打開終端。io

  經過【cd /home】切換到home目錄下。【ls】查看該目錄下的全部內容。

 

圖1 切換目錄

  【mkdir except】在home目錄下建立except文件夾。

圖2 建立文件夾

步驟二、捕捉異常

  【cd except】切換到except目錄下,【vim except1.py】回車後建立並編輯名爲except1的Python文件

圖3 建立Python文件

  回車後進入編輯框內,按鍵盤【i】進入編輯狀態,輸入以下程序。

  分別獲取用戶輸入的x與y值,並進行除法運算。

圖4 編輯Python文件

  編輯完畢後,按【esc】退出編輯狀態,【:wq】保存並退出編輯框,【python except1.py】執行except1的Python文件。

  分別輸入第一個數字6,第二個數字0。回車後報ZeroDivisionError異常,該異常在除法或者模除操做的第二個參數爲0時引起。

圖5 運行Python文件

  再次進入except1.py文件編輯狀態,修改程序。

圖6 編輯Python文件

  再次運行except1.py程序。再次輸入第一個數字6,第二個數字0。回車後不報異常,並將except後的打印語句輸出。根據結果證實try/except將異常捕捉並處理

圖7 運行Python文件

  若是用戶在提示符後面輸入非數字類型的值,就會產生另一個異常。

  運行except1.py程序,輸入第一個數字6,第二個值爲’shiyanbar’,回車後報TypeError異常。

圖8 運行Python文件

  由於except子句只尋找ZeroDivisionError異常,此次的錯誤就溜過了檢查並致使程序終止。

  捕捉這個異常,能夠直接在同一個try/except語句後面加上另外一個except字句。

  再次進入except1.py文件編輯狀態,修改程序。

圖9 編輯Python文件

  再次運行except1.py程序。再次輸入第一個數字6,第二個值爲’shiyanbar’。回車後不報異常,並將except後的打印語句輸出。

圖10 運行Python文件

  固然這種解決辦法能夠捕獲異常,但產生的問題是程序中會增長一大堆可能錯誤狀況的except,會讓代碼至關的難讀。

  若是須要用一個塊解決多個類型異常,能夠將它們做爲元組列出。

  再次進入except1.py文件編輯狀態,修改程序便可。

圖11 編輯Python文件

  若是想讓程序繼續運行,可是又由於某種緣由想記錄下錯誤。

  再次進入except1.py文件編輯狀態,修改程序。程序會打印異常,而且程序會繼續運行。

圖12 運行Python文件

  再次運行except1.py程序。再次輸入第一個數字6,第二個值爲0。回車後不報異常,並將異常的信息輸出。

圖13 運行Python文件

  就算程序中能處理好幾種類型的異常,但有些異常仍是會從眼皮下溜走。

  再次運行except1.py程序。再次輸入第一個數字6,第二個值爲空。回車後報SyntaxError異常。

圖14 運行Python文件

  能夠用一段代碼捕捉全部異常,能夠在except子句中忽略全部的異常類。

  再次進入except1.py文件編輯狀態,修改程序。

  像這樣捕捉全部的異常是危險的,由於會隱藏程序員未想到而且未作好準備處理的錯誤等。這時使用except Exception,e會更好些。

圖15 運行Python文件

  在有些狀況中,沒有異常發生執行一段代碼是頗有用的,能夠像對條件和循環語句那樣,給try/except添加個else字句。

  再次進入except1.py文件編輯狀態,修改程序。

  這裏的循環只在沒有異常發生引起的狀況下才會退出(由else字句中的break語句退出),只要有錯誤發生,程序會不斷要求從新輸入,並將異常信息打印。

圖16 編輯Python文件

  再次運行except1.py程序。

  再次輸入第一個數字6,第二個值爲0。回車後報’integer division or modulo by zero’異常。

  再次輸入第一個數字6,第二個值爲’shiyanbar’,回車後報’unsupported operand type(s) for /: ‘int’ and ‘str’’。

  再次輸入第一個數字6,第二個值爲3,獲得除結果。

圖17 運行Python文件

  最後,finally字句能夠用來在可能的異常後進行清理,和try聯合使用。

  經過【vim except2.py】建立並編輯名爲except2的Python文件。編輯以下代碼。

  在程序中,finally字句確定會被執行,無論try字句中是否發生異常。

圖18 編輯Python文件

  【python except2.py】運行python文件,在程序崩潰以前,對於變量x的清理完成。

  由於使用del語句刪除一個變量是很是不負責的清理手段,全部finally子句用於關閉文件或關閉因系統錯誤而沒法正常釋放的資源。好比文件關閉,釋放鎖,把數據庫鏈接返還給鏈接池等

圖19 運行Python文件
相關文章
相關標籤/搜索