Python 請求模組中的Try/Except 錯誤處理
在Python 中使用Requests 模組是處理API 呼叫和HTTP 請求的便捷方法。當請求執行期間發生錯誤時,必須有強大的錯誤處理能力。
此程式碼正確嗎?
try: r = requests.get(url, params={'s': thing}) except requests.ConnectionError, e: print(e)
此程式碼嘗試透過處理 ConnectionError 異常來僅擷取與連線相關的錯誤。但是,這並沒有涵蓋 Requests 模組可能遇到的所有可能的錯誤場景。
建構錯誤處理的更好方法
為了確保處理所有潛在的錯誤,建議捕獲基異常類requests.exceptions.RequestException 而不是特定異常,例如ConnectionError .
try: r = requests.get(url, params={'s': thing}) except requests.exceptions.RequestException as e: # This is the correct syntax raise SystemExit(e)
或者,您可以單獨處理特定的異常並相應地採取不同的操作。例如,您可以以不同於連線錯誤的方式處理逾時。
try: r = requests.get(url, params={'s': thing}) except requests.exceptions.Timeout: # Maybe set up for a retry, or continue in a retry loop except requests.exceptions.TooManyRedirects: # Tell the user their URL was bad and try a different one except requests.exceptions.RequestException as e: # catastrophic error. bail. raise SystemExit(e)
捕捉 HTTP 錯誤
如果您希望引發 HTTP 錯誤(例如 401 Unauthorized)的異常,你可以使用 Response.raise_for_status() 方法。
try: r = requests.get('http://www.google.com/nothere') r.raise_for_status() except requests.exceptions.HTTPError as err: raise SystemExit(err)
徹底處理異常並根據錯誤類型自訂行為,您可以確保您的程式碼在 HTTP 請求期間正確回應錯誤和使用者輸入。
以上是如何有效處理Python請求模組中的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!