【发布时间】:2017-05-16 17:39:58
【问题描述】:
我目前正在编写对另一个我无法控制的 Python 库的扩展。该库具有如下功能:
def xyz():
try:
sources = []
...
#code that may add values to sources and may also throw an exception
...
return sources
except:
return sources
如果返回一个空列表,我想以某种方式确定是因为抛出了异常(在值可以添加到源之前),还是因为没有向源添加值(没有抛出异常)。
有什么想法吗?同样,我无法控制函数,因此无法更改返回值或在函数外部添加 try->except。
【问题讨论】:
-
你不能编辑
except: return 1的函数 -
这些函数实际上有数千个。因此,我无法更改函数中的任何内容。每次外部库的开发人员发布更新时,我都必须再次检查所有数千个函数,所以没有。
-
如果你猴子修补了 exceptions.BaseException 并添加了各种实例计数器怎么办?这样当 init 被调用时,它会递增吗?如果您没有运行多线程代码,那么您可以在每次调用后检查
Exception.counter == counter_before_call。臭黑客,肯定的。而且,请注意,Exceptions 似乎使用了 __slots__,这让它变得更加困难。 -
感谢 JL,这个想法可能行得通。
标签: python exception exception-handling except