Python S3異常處理

2021-10-08 12:47:41 字數 4354 閱讀 7558

3.4 練習題

兩個任務:1. 複習前面兩個 2. 異常處理學習

異常就是執行檢測到的錯誤。計算機語言針對可能出現的錯誤定義了異常型別,某種

【使用】

try

: 檢測範圍

except exception[

as reason]

: 出現異常後的處理**

try語句按照如下方式工作:

try

: f =

open

('test.txt'

)print

(f.read())

f.close(

)except oserror:

print

('開啟檔案出錯'

)# 【輸出】

# 開啟檔案出錯

乙個try語句對應多個except子句,分別來處理不同的特定的異常。在每處理乙個異常時最多對應乙個分支會被執行。

【例子】

try

:int

("abc"

) s =1+

'1' f =

open

('test.txt'

)print

(f.read())

f.close(

)except oserror as error:

print

('開啟檔案出錯\n原因是:'

+str

(error)

)except typeerror as error:

print

('型別出錯\n原因是:'

+str

(error)

)except valueerror as error:

print

('數值出錯\n原因是:'

+str

(error)

)# 【輸出】

# 數值出錯

# 原因是:invalid literal for int() with base 10: 'abc'

# 【例子】

dict1 =

try:

x = dict1[

'y']

except lookuperror:

print

('查詢錯誤'

)except keyerror:

print

('鍵錯誤'

)else

:print

(x)# 【輸出】

# 查詢錯誤

try-except-else語句嘗試查詢不在dict中的鍵值對,從而引發了異常。這一異常準確地說應屬於keyerror,但由於keyerror是lookuperror的子類,且將lookuperror置於keyerror之前,因此程式優先執行該except**塊。所以,使用多個except**塊時,必須堅持對其規範排序,要從最具針對性的異常到最通用的異常。

如果在try子句執行時沒有發生異常,python將執行else語句後的語句。

# 【模板1】

try:

檢測範圍

except exception[

as reason]

: 出現異常後的處理**

else:

不發生異常才會執行的**

# 【模板2】

try:

檢測範圍

except

:# 使用except而不帶任何異常型別,不是乙個很好的方式,預設捕獲所有異常

出現異常後的處理**

else

: 如果沒有異常執行這塊**

#【模板3】

try:

檢測範圍

except

(exception1, exception2,,..

.exception n)

:# 使用錯誤型別元組

發生以上多個異常中的乙個,執行這塊**

else

: 如果沒有異常執行這塊**

【例子】

dict1 =

try:

x = dict1[

'y']

except keyerror:

print

('鍵錯誤'

)except lookuperror:

print

('查詢錯誤'

)else

:print

(x)# 鍵錯誤

# 【例子】

try:

fh =

open

("testfile"

,"w"

) fh.write(

"這是乙個測試檔案,用於測試異常!!"

)except ioerror:

print

("error: 沒有找到檔案或讀取檔案失敗"

)else

:print

("內容寫入檔案成功"

) fh.close(

)# 【輸出】

# 內容寫入檔案成功

乙個except子句可以同時處理多個異常,這些異常將被放在乙個括號裡面成為乙個元組。

try

: s =1+

'1'int

("abc"

) f =

open

('test.txt'

)print

(f.read())

f.close(

)except

(oserror, typeerror, valueerror)

as error:

print

('出錯了!\n原因是:'

+str

(error)

)# 出錯了!

# 原因是:unsupported operand type(s) for +: 'int' and 'str'

不管try子句裡面有沒有發生異常,finally子句都會被執行。

如果乙個異常在try子句裡被丟擲,而又沒有任何的except對應把它截住,那麼這個異常會在finally子句執行後被丟擲。

try

: 檢測範圍

except exception[

as reason]

: 出現異常後的處理**

finally:

無論如何都會執行的**

【例子】

def

divide

(x, y)

:try

: result = x / y

print

("result is"

, result)

except zerodivisionerror:

print

("division by zero!"

)finally

:print

("executing finally clause"

)# 【互動輸出】

divide(2,

1)# result is 2.0

# executing finally clause

divide(2,

0)# division by zero!

# executing finally clause

divide(

"2",

"1")

# executing finally clause

# typeerror: unsupported operand type(s) for /: 'str' and 'str'

python使用raise語句丟擲乙個指定的異常。

【例子】

try

:raise nameerror(

'hithere'

)except nameerror:

print

('an exception flew by'

)# 【輸出】

# an exception flew by!

【題目描述】電腦產生乙個零到100之間的隨機數字,然後讓使用者來猜,如果使用者猜的數字比這個數字大,提示太大,否則提示太小,當使用者正好猜中電腦會提示,「恭喜你猜到了這個數是…」。在使用者每次猜測之前程式會輸出使用者是第幾次猜測,如果使用者輸入的根本不是乙個數字,程式會告訴使用者"輸入無效"。

要求:嘗試使用try catch異常處理結構對輸入情況進行處理; 獲取隨機數採用random模組。

3 異常處理

題目描述 電腦產生乙個零到100之間的隨機數字,然後讓使用者來猜,如果使用者猜的數字比這個數字大,提示太大,否則提示太小,當使用者正好猜中電腦會提示,恭喜你猜到了這個數是 在使用者每次猜測之前程式會輸出使用者是第幾次猜測,如果使用者輸入的根本不是乙個數字,程式會告訴使用者 輸入無效 嘗試使用try ...

python 異常處理3

def set age age if age 0 or age 200 print 值錯誤 raise valueerror 值錯誤 else print 給張三的年齡設定為 age try set age 18 except exception as e print x e 什麼時候應該向外界丟擲...

Python3 異常處理

python3.5 異常處理 try用法 try except語句主要是用於處理程式正常執行過程中出現的一些異常情況 try finally語句則主要用於在無論是否發生異常情況,都需要執行一些清理工作的場合 完整語句中,else語句的存在必須以except x或者except語句為前提,也就是說el...