繁体   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