新人写代码最爱:
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 · 小朵科技工作室 出品。