簡體   English   中英

我不知道如何處理不同的錯誤

[英]I can't figure out how to handle different errors

我有一些生成以下響應的代碼:

請求失敗:Google 返回了代碼為 429 的響應。

即使我正在打印 err 變量,我也無法觸發這些 if 語句中的任何一個,所以我確切地知道它說的是什么。 我在這里做錯了什么?

try:
    <---irrelevant code--->
except (ResponseError, RuntimeError, TypeError, NameError, KeyError) as err: 
    print("Key error: {}. {}, while querying {} pausing".format(KeyError, err, stock))
    if err == 429:
        print("429 error")
        <---more actions--->
    if err == "The request failed: Google returned a response with code 429."
        print("429 error")
        <---more actions--->

這個問題缺乏一些背景,這里有一些概念上的錯誤。

  1. 當您使用 try/except 塊時,您正在嘗試捕獲代碼中出現的錯誤,這些錯誤可能與網絡、錯誤語義或其他任何相關。 但它實際上引發了異常,因此 try 塊中的代碼不是無關緊要的代碼。 我們知道您在做什么非常重要。
  2. 您嘗試捕獲的所有異常都是 Class 的實例。因此,錯誤的是它是 object,您嘗試的比較沒有意義。 可以打印錯誤的原因是 object 有一個strrepr function。為了更好地理解:
try:
    raise EOFError
except EOFError as e:
    print(dir(e))

這將是 output:

<類'EOFError'>

  1. 閱讀你的問題很難說你的代碼是否會拋出一個你能夠捕獲的錯誤,或者它只是返回一個字符串,表示請求失敗,盡管代碼運行完美。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM