簡體   English   中英

在python中捕獲異常…但仍然繼續

[英]Catch an exception in python… but still continue

tl; dr我使用try: ... except Exception as err: pass的例外除外,但引發異常時代碼仍會停止,即使不是這樣。

我正在csv上運行轉換算法。 轉換之一考慮了數據庫中列值的存在。 如果它不存在,我將引發如下異常:

2019-05-15 16:36:37,095 - root - WARNING - The data in 'section_code' either doesn't exist in the raw data or hasn't been correctly encoded. The following strings caused the encoding error : '['398', 'die']'

我知道使用try: ... except: pass這種做法不是很好, try: ... except: pass ,但是我希望我的代碼繼續轉換文件,同時只記錄錯誤/警告出現的地方。

這是將我的代碼包裝在try...except塊中的方式

if __name__ == "__main__":
    try:
        # Initiate logger
        logging.basicConfig(
            level="DEBUG",
            format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

        # Business code ...

    except FileNotFoundError as f_err:
        logging.exception(f_err)
    except AzureMissingResourceHttpError as az_err:
        logging.exception(az_err)
    except TypeError as t_err:
        pass
        logging.warning(t_err)

所以我的問題是:為什么pass語句沒有想要的效果,我該如何實現這種行為?

發生異常時,代碼立即跳轉到異常處理程序,並在異常發生恢復代碼。 它不會返回並繼續在代碼中保留的地方。

要解決此問題,您必須將try / except限制在要忽略其異常的代碼行周圍。

暫無
暫無

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

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