10.1 什麼是異常
10.1.1 錯誤
從軟體方面來說,錯誤是語法或是邏輯上的。語法錯誤指示軟體結構上有錯誤,導致不能被直譯器解釋或編譯器編譯。這些錯誤必須在程式執行前糾正。
邏輯錯誤可能是由於不完整或是不合法的輸入所致;在其他情況下,還可能是邏輯無法生成、計算、或是輸出結果需要的過程無法執行。這些錯誤分別被稱為域錯誤或範圍錯誤。
10.1.2 異常
異常是因為程式出現了錯誤而在正常控制流以外採取的行為。這個行為又分為兩個階段:首先是引起異常發生的錯誤,然後是檢測(和採取可能的措施)階段。
10.2 python中的異常
nameerror zerodivisionerror syntaxerrror indexerror keyerror attributeerror
syntaxerror異常是唯一不是在執行時發生的異常。它代表python**中有乙個不正確的結構,在它改正之前程式無法執行。這些錯誤一般都是在編譯時發生。
10.3 檢測和處理異常
乙個try語句可以對應乙個或多個except子句,但只能對應乙個finally子句,或是乙個try-except-finally復合語句。
可以使用try-except語句檢測和處理異常,也可以新增乙個可選的else子句處理沒有探測到異常的執行的**。而try-finally只允許檢測異常並做一些必要的清理工作,沒有任何異常處理設施。
10.3.1 try-except語句
try語句塊中異常發生點後的剩餘語句永遠不會到達,所以也永遠不會執行。
>>> try:
... f = open("c:\\asdas")
... except ioerror, e:
... print 'could not open file:', e
...
could not open file: [errno 2] no such file or directory: 'c:\\asdas'
>>>
10.3.2 包裝內建函式
>>> def safe_float(obj):
... try:
... return float(obj)
... except valueerror, e:
... print "this is an invalid value..."
... return none
...
>>> `safe_float("ads")`
this is an invalid value...
'none'
>>> `safe_float("123")`
'123.0'
>>>
10.3.3 帶有多個except的try語句
>>> def safe_float1(obj):
... try:
... return float(obj)
... except valueerror, e:
... print "value was invalid..."
... return none
... except typeerror, e:
... print "type was invalid..."
... return none
...
>>> `safe_float1("ad")`
value was invalid...
'none'
>>> `safe_float1(())`
type was invalid...
'none'
>>>
10.3.4 處理多個異常的except語句
還可以在乙個except子句裡處理多個異常,except語句在處理多個異常時要求異常被放在乙個元組裡。
>>> def safe_float2(obj):
... try:
... return float(obj)
... except (typeerror, nameerror, valueerror), e:
... print "error: ",e
... return none
...
>>> `safe_float2('asd')`
error: could not convert string to float: asd
'none'
>>>
10.3.5 捕獲所有異常
baseexception是所有異常之母。
>>> def safe_float3(obj):
... try:
... return float(obj)
... except typeerror, e:
... print "typeerror: ", e
... return none
... except baseexception, e:
... print "error: ", e
... return none
...
>>> `safe_float3("asd")`
error: could not convert string to float: asd
'none'
>>> `safe_float3(())`
typeerror: float() argument must be a string or a number
'none'
>>>
第10章 檔案和異常 10 2 寫入檔案
li hongliang 2020年08月12日 10.2 寫入檔案 儲存資料的最簡單的方式之一是將其寫入到檔案中。通過將輸出寫入檔案,即便關閉包含程式輸出的終端視窗,這些輸出也依然存在 你可以在程式結束執行後檢視這些輸出,可與別人分享輸出檔案,還可編寫程式來將這些輸出讀取到記憶體中並進行處理。要讓...
python錯誤和異常(1)
1 syntaxerror python直譯器語法錯誤,是唯一不是在執行時發生的異常。2 檢測和處理異常 try語句有兩種主要形式 try except 和 try finally.只能二選一。乙個try語句可以對應乙個或多個except子句,但只能對應乙個finally子句。try語句塊中異常發生...
第10章 關聯容器 1
關聯容器和順序容器的本質差別在於 關聯容器通過鍵 key 儲存和讀取元素,而順序容器則通過元素在容器中的位置順序儲存和訪問元素。關聯容器 associative container 支援通過鍵來高效地查詢和讀取元素。map的元素以鍵 值 key value 對的形式組織 鍵用作元素在map中的索引,...