Python基礎Task3:異常處理
阿新 • • 發佈:2020-07-25
Python基礎Task3:異常處理
1.try-except語句
try:
檢測範圍
except Exception[as reason]:
出現異常後的處理程式碼
【例子】
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('開啟檔案出錯')
try 語句按照如下方式工作:
首先,執行try子句(在關鍵字try和關鍵字except之間的語句)
如果沒有異常發生,忽略except子句,try子句執行後結束。
如果在執行try子句的過程中發生了異常,那麼try子句餘下的部分將被忽略。如果異常的型別和except之後的名稱相符,那麼對應的except子句將被執行。最後執行try語句之後的程式碼。
如果一個異常沒有與任何的except匹配,那麼這個異常將會傳遞給上層的try中。
一個try語句可能包含多個except子句,分別來處理不同的特定的異常。最多隻有一個分支會被執行。
使用多個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'
2. try - except - finally 語句
try:
檢測範圍
except Exception[as reason]:
出現異常後的處理程式碼
finally:
無論如何都會被執行的程式碼
如果一個異常在try子句裡被丟擲,而又沒有任何的except把它截住,那麼這個異常會在finally子句執行後被丟擲。
3.try - except - else 語句
如果在try子句執行時沒有發生異常,Python將執行else語句後的語句。
try: 檢測範圍 except: 出現異常後的處理程式碼 else: 如果沒有異常執行這塊程式碼
注意:else語句的存在必須以except語句的存在為前提,在沒有except語句的try語句中使用else語句,會引發語法錯誤。
4.raise語句
Python 使用raise語句丟擲一個指定的異常。
【例子】
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by!')
#An exception flew by!
3.練習題:猜數字
題目描述:
電腦產生一個零到100之間的隨機數字,然後讓使用者來猜,如果使用者猜的數字比這個數字大,提示太大,否則提示太小,當用戶正好猜中電腦會提示,"恭喜你猜到了這個數是......"。在使用者每次猜測之前程式會輸出使用者是第幾次猜測,如果使用者輸入的根本不是一個數字,程式會告訴使用者"輸入無效"。
(嘗試使用try catch異常處理結構對輸入情況進行處理)
獲取隨機數採用random模組。
import random
count=1
x=random.randint(0,100)
print("猜測一個0到100之間的整數:\n")
while True:
try:
m = input("這是第%d次猜,請輸入一個整數:\n" % count)
m1=int(m)
if m1>x:
print("太大")
count +=1
#continue
elif m1<x:
print("太小")
count += 1
#continue
else:
print("恭喜你猜對了!")
count=1
x=random.randint(0,100)
print("猜測一個0到100之間的整數:\n")
except ValueError as error:
print("輸入的不是數字" + str(error))
print("請輸入一個0到100之間的整數")