python筆記 異常處理

2021-08-27 03:14:36 字數 2364 閱讀 2569

1.狹義的異常處理

當一次請求多個網頁時,如果其中乙個網頁出錯,那麼整個程式就會終止,造成其他網頁都無法完成請求。所以需要通過異常處理將可能出錯的網頁進行處理,以至於其他網頁能被請求。

import requests

urls = ["", "", ""]

defget_data

(url):

data = requests.get(url)

return data.text

if __name__ == '__main__':

for url in urls:

get_data(url)

以上**由於第乙個**就出錯了,所以程式立即終止,沒有請求其他**;當錯誤**在最後的時候,即使前面3個**已經完成請求,也會因為錯誤網的存在而退出,不能完成任務。異常處理能夠避免這種情況。以下為改進後的**:

import requests

urls = ["", "", ""]

defget_data

(url):

# 將可能會報錯的語句放在try語句塊內

try:

data = requests.get(url)

# 將出錯後的處理放在exceot語句塊內

except requests.exceptions.connectionerror as e:

print("請求錯誤, url: ", url)\

print("錯誤詳情", e)

data = none

return data

if __name__ == '__main__':

for url in urls:

get_data(url)

try,except語句表達的含義是,先執行 data=requests.get(url),如果成功則跳過except繼續執行,否則出現預期錯誤時,執行except內的語句。這樣避免了因為個別網頁請求錯誤而導致整個程式崩潰。tyr, except進一步了解**如下。

def

divide

(x, y):

try:

result = x / y

except zeroexceptionerror:

print("division by zero!")

except valueerror:

print("value error")

else:

print("result is", result)

finally:

print("executing finally clause!")

注:try之後可以跟多個except語句,用於捕捉不同錯誤,如果except之後不佳具體錯誤型別,預設捕捉所有錯誤。else子句智慧型出現在except之後。finally 是在所有情況下都會被執行的語句,一般用於釋放檔案或者資源。

通過異常處理,既能夠了解錯誤情況,又能夠使得程式繼續執行。從廣義上來說,任何未達預期的情況都屬於異常。

2.廣義的異常處理

未達預期的情況,如請求遇到狀態嗎是5xx,這種情況不是自己**出了問題,而是**伺服器有問題,是得不到網頁內容的,而此時程式並不會報錯,一般重新整理就可以解決,所以我們**通過模擬重新整理這個操作就可以解決。

import time

import requests

urls = [""]

defget_data

(url, num_retries=3):

try:

data = requests.get(url)

print(data.status_code)

except requests.exceptions.connectionerror as e:

print("請求錯誤,url", url)

print("錯誤詳情:", e)

data = none

if (data!=none) and (500

<=data.status_code<600):

if(num_retries>0):

print("伺服器錯誤,正在重試")

time.sleep(1)

num_retries -= 1

get_data(url, num_retries)

return data

if __name__ == '__main__':

for url in urls:

get_data(url)

3.robot.txt略

此文為《puthon資料分析入門–從資料獲取到視覺化》書的學習筆記,有錯之處還請指出。

Python筆記 異常處理

python筆記 異常處理 捕獲異常 try 語句 except 異常名1 語句 except 異常名2 語句 else 語句 另一種形式,不包含except和else語句 try 語句 finally 語句 eg.python view plain copy print l 1,2,3,4 try...

Python 異常處理筆記

異常處理 異常 程式執行過程 現的錯誤和警告 異常類 給不同的種類的異常分的型別 nameerror 標示符未定義錯誤 print a typeerror 型別錯誤 print abcd 123 indexerror 下標越界錯誤 lis 紅燒肉 香辣烤魚 火鍋 print lis len lis ...

python異常處理 Python 異常處理

使用者輸入不完整 比如輸入為空 或者輸入非法 輸入不是數字 異常就是程式執行時發生錯誤的訊號,在python中,錯誤觸發的異常如下 在python中不同的異常可以用不同的型別 python中統一了類與型別,型別即類 去標識,不同的類物件標識不同的異常,乙個異常標識一種錯 觸發indexerror 觸...