Aet*_*tos 0 python logging exception
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
块中的方式
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)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:为什么该pass
语句没有想要的效果,我该如何实现这种行为?
发生异常时,代码立即跳转到异常处理程序,并在异常发生后恢复代码。它不会返回并继续在代码中保留的地方。
要解决此问题,您必须将try / except限制在要忽略其异常的代码行周围。