大家好,有没有办法’检测’什么例外功能/方法提出?示范:
def foo():
print 'inside foo, next calling bar()'
_bar()
_baz()
# lots of other methods calls which raise other legitimate exceptions
def _bar():
raise my_exceptions.NotFound
def _baz():
raise my_exceptions.BadRequest
所以,假设foo是我的API的一部分,我需要记录它,有没有办法获得可以从中提取的所有异常?
为了清楚起见我不想处理这些异常,它们应该发生(例如,当找不到资源或者请求格式错误时).
我正在考虑创建一些工具,以“内联”方式转换代码序列,如:
def foo():
print 'inside foo, next calling bar()'
# what _bar() does
raise my_exceptions.NotFound
# what _baz() does
raise my_exceptions.BadRequest
# lots of other methods calls which raise other legitimate exceptions
有没有什么可以帮助我检测到而不是导航每个方法调用? (深入到几个文件)
最佳答案 你不能用Python合理地做到这一点,原因如下:
1)Python原语并未准确记录它们可以抛出的异常. Python的精神是任何事情都可以随时抛出任何异常.
2)Python的动态特性使得完全静态分析代码变得非常困难,几乎不可能知道代码“可能”做什么.
3)各种不感兴趣的异常必须在列表中,例如,如果你有self.foo,那么它可能引发AttributeError.需要一个非常复杂的分析器来确定foo必须存在.