新人写代码最爱:

try:
    everything()
except:
    pass

这是最差的做法,等于没写。

正确的「三段式」:

第一,只抓能处理的异常。

try:
    df = pd.read_csv(path)
except FileNotFoundError:
    print(f"文件 {path} 不存在,请检查路径")
except pd.errors.EmptyDataError:
    print("文件是空的")
# 不要 except Exception,会把 KeyboardInterrupt 也吞了

第二,异常要带上下文。

try:
    api.call(data)
except Exception as e:
    raise RuntimeError(f"调用 API 失败,data={data}") from e

第三,顶层一定要兜底。

if __name__ == "__main__":
    try:
        main()
    except Exception as e:
        logger.exception("主流程挂了")
        notify_admin(e)
        sys.exit(1)

原则:让程序「优雅地失败」,而不是「假装没失败」。


本文由 BBZ · 小朵科技工作室 出品。