检测python程序/函数/方法可以引发的异常
发布时间:2020-12-20 11:24:27 所属栏目:Python 来源:网络整理
导读:大家好,有没有办法’检测’什么例外功能/方法提出?示范: def foo(): print 'inside foo,next calling bar()' _bar() _baz() # lots of other methods calls which raise other legitimate exceptionsdef _bar(): raise my_exceptions.NotFounddef _baz():
大家好,有没有办法’检测’什么例外功能/方法提出?示范:
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必须存在. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |