在程式執行過程中發生的任何錯誤都是異常。每個異常顯示一些相關的錯誤資訊,比如你在 python3 中使用 python2 獨有的語法就會發生syntaxerror
不小心在行首多打了乙個空格就會產生indentationerror
:
當訪問乙個未定義的變數則會發生nameerror
最後一行包含了錯誤的詳細資訊,其餘行顯示它是如何發生(或什麼引起該異常)的詳細資訊
typeerror也是一種經常出現的異常。當操作或函式應用於不適當型別的物件時引發,乙個常見的例子是對整數和字串做加法
使用try...except
塊來處理任意異常
try:
statements to be inside try clause
statement2
statement3
except exceptionname:
首先,執行try
子句 (在try
和except
關鍵字之間的部分)。
如果沒有異常發生,except
子句 在try
語句執行完畢後就被忽略了。
如果在try
子句執行過程中發生了異常,那麼該子句其餘的部分就會被忽略。
如果異常匹配於except
關鍵字後面指定的異常型別,就執行對應的except
子句。然後繼續執行try
語句之後的**。
如果發生了乙個異常,在except
子句中沒有與之匹配的分支,它就會傳遞到上一級try
語句中。
如果最終仍找不到對應的處理語句,它就成為乙個 未處理異常,終止程式執行,顯示提示資訊。
使用raise
語句丟擲乙個異常。
定義清理行為:
try
語句還有另乙個可選的finally
子句,目的在於定義在任何情況下都一定要執行的功能
不管有沒有發生異常,finally
子句 在程式離開try
後都一定會被執行。當try
語句中發生了未被except
捕獲的異常(或者它發生在except
或else
子句中),在finally
子句執行完後它會被重新丟擲。
在真實場景的應用程式中,finally
子句用於釋放外部資源(檔案或網路連線之類的),無論它們的使用過程中是否出錯。
實現乙個程式,將分鐘轉為小時和分鐘:
注意:**中不要使用input()
函式,否則挑戰測試會卡住,出現timeout
的報錯。
在 minutestohours.py 檔案中實現乙個函式hours()
,將使用者輸入的分鐘數
轉化為小時數和分鐘數
,並要求小時數盡量大。將結果以xx h, xx m
的形式列印出來。
要求:使用者能夠通過命令列引數輸入分鐘數,不要使用input
,命令列引數可以使用sys.ar**
來提取。例如程式執行為python3 minutestohours.py 80
,傳入的引數 80 就是分鐘數,程式需要列印出相應的小時數和分鐘數,輸出為1 h, 20 m
。
如果使用者輸入的是乙個負值,程式需要 raise 來丟擲valueerror
異常。
hours()
函式呼叫的時候,需要使用try...except
處理異常。獲取異常後,在螢幕上列印出parameter error
提示使用者輸入的值有誤。
java入門基礎 6
1.區域性變數 形參或者其他與屬性 方法或者其他重名 導致直接通過名第一行 字訪問出現歧義 name shadow 命名遮擋 關鍵字 this 通過this全名稱訪問屬性 方法 通過this 呼叫其他的構造方法 但是this的呼叫,必須出現在構造方法的 第一行 this代表的就是這個物件本身 1.s...
Python入門6 抽象
1,建立函式 defhello name return hello name print hello jack hello jack 使用help 函式能了解函式的資訊 help abs abs abs number number return the absolute value of the a...
python入門記錄 python入門基礎習題記錄
執行python指令碼的兩種方式 1 配置好環境變數,python py 2 python進入python直譯器,直接執行 簡述位 位元組關係 1 1位元組 byte 8位 bit 簡述ascii,unicode,utf 8,gbk關係 1 ascii 最早的一種編碼方式,用乙個位元組也就是8位來表...