异常处理的核心:让错误在正确的地方被有效处理。正确的地方,就是别在底层就把异常吞了,也别在顶层还抛裸奔的 Exception。
异常处理写得好,半夜不用起来改 bug。

1. 你是不是也这么干过?
try: # 一大坨代码 result = do_something() process(result) save_to_db(result) send_email()except: pass
这段代码有什么问题?
问题大了。任何地方出错都静默吞掉,日志都不留。出了事从哪查起?
还有下面一种:
try: data = load_config()except Exception as e: print(e)
打印完然后呢?程序继续跑,带着错误配置一路狂奔,最后在某个奇怪的地方崩掉。到时候更找不到北,准确地说,是会付出很大的时间成本才能定位到真实问题所在。
