我有一些类似以下代码的代码:
from logging import warning
def complex_function():
# Do some stuff
raise Warning("blah")
# Do some more stuff
raise Warning("Blah again")
try:
complex_function()
except Warning as e:
warning(e)
结果是:
WARNING:root:blah
我想捕获所有提出的警告,并将其记录下来。在我的代码中,此类警告有时来自第三方库,因此修改警告以使用logging.warning
是不切实际的,并且我还想存储警告信息以便可以返回该警告的某些版本。通过API获取信息。
我有办法做这样的事情来捕获所有警告并循环遍历它们吗?
为时已晚,我意识到我在上面的示例中提出了错误的警告,complex_function
应该距离以下行很长:
def complex_function():
# Do some stuff
warnings.warn("blah")
# Do some more stuff
warnings.warn("Blah again", UnknownWarningType)
我想我可以用warnings.catch_warnings
答案 0 :(得分:2)
您是否期望以下内容:
import warnings
warnings.filterwarnings('error')
def warning_func():
print('hello')
warnings.warn(Warning('Warn1'))
print('hi')
warnings.warn(Warning('Warn2'))
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
warning_func()
print(w)