在 Python
开发过程中,经常遇到这样的问题:
Python
代码在加了异常处理try...except...
之后,一旦出现异常即被匹配的except
处理,屏蔽掉了很多出错的信息,造成很难确定问题的原因;
一种处理方案:
在代码中打很多
log
,这样会增加很多日志信息,另外就是,有些小问题(比如下标引用出错,不存在该字典键值,等)依然因为会因except
而呗屏蔽,对于此,可以在每个except
处打出log
。
以上就是我的个人做法,请问各位,一般有什么比较好的做法呢?欢迎不吝赐教!
首先,非常感谢各位的建议,很受用,很有启发。
异常 raise
和 except
有什么好的做法,有时候感觉 Exception
比较多,比较混乱,捕获路径也比较混乱。一般有什么好的做法,比如就近捕获再向上传递,等等。
1
SpicyCat 2016-01-19 12:04:29 +08:00
每个异常处都打 log 是通常做法吧?有异常不抛就算了,连 log 也不打,那岂不要坑死调试的人?
|
2
yangtukun1412 2016-01-19 12:37:06 +08:00
一般建议只捕获具体的异常而不是 except Exception 这样捕获全部异常。
如果你捕获了全部异常,那打日志是最基本操作的,而且往往需要打 traceback 日志来记录出现问题的行数。 |
3
strahe 2016-01-19 12:44:20 +08:00
尽量不要用`except` 和 `except Exception` ,截取所有错误,推荐你看《改善 Python 程序的 91 个建议》
|
4
Mark3K 2016-01-19 12:47:44 +08:00
一般情况下在有必要进行异常处理的地方捕获异常进行处理,而且是你自己清楚的具体异常,这样可以在程序因非期望异常而崩溃的时候,尽早发现一些潜在的 BUG ;另外记录异常的时候可以使用 logger.error(e, exc_info=True)输出 traceback 信息;
|