Python 出错问题定位经验请教!

2016-01-19 11:20:30 +08:00
 sunway1988

Python 开发过程中,经常遇到这样的问题:

Python 代码在加了异常处理 try...except... 之后,一旦出现异常即被匹配的 except 处理,屏蔽掉了很多出错的信息,造成很难确定问题的原因;

一种处理方案:

在代码中打很多 log,这样会增加很多日志信息,另外就是,有些小问题(比如下标引用出错,不存在该字典键值,等)依然因为会因 except 而呗屏蔽,对于此,可以在每个 except 处打出 log

以上就是我的个人做法,请问各位,一般有什么比较好的做法呢?欢迎不吝赐教!

2232 次点击
所在节点    问与答
4 条回复
SpicyCat
2016-01-19 12:04:29 +08:00
每个异常处都打 log 是通常做法吧?有异常不抛就算了,连 log 也不打,那岂不要坑死调试的人?
yangtukun1412
2016-01-19 12:37:06 +08:00
一般建议只捕获具体的异常而不是 except Exception 这样捕获全部异常。

如果你捕获了全部异常,那打日志是最基本操作的,而且往往需要打 traceback 日志来记录出现问题的行数。
strahe
2016-01-19 12:44:20 +08:00
尽量不要用`except` 和 `except Exception` ,截取所有错误,推荐你看《改善 Python 程序的 91 个建议》
Mark3K
2016-01-19 12:47:44 +08:00
一般情况下在有必要进行异常处理的地方捕获异常进行处理,而且是你自己清楚的具体异常,这样可以在程序因非期望异常而崩溃的时候,尽早发现一些潜在的 BUG ;另外记录异常的时候可以使用 logger.error(e, exc_info=True)输出 traceback 信息;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251771

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX