[英]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.