gpt4 book ai didi

python - 检测 python 程序/函数/方法可以引发哪些异常

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:04 25 4
gpt4 key购买 nike

有没有办法“检测”函数/方法引发的异常?举例说明:

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 必须存在。

关于python - 检测 python 程序/函数/方法可以引发哪些异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com