当显式地告诉Python将RuntimeWarning
视为异常时,Warning
成功地变成了Exception
。但是现在我得到了一个Exception ignored
,程序仍然没有失败。最小可复制示例:
import asyncio
import warnings
async def main():
asyncio.sleep(1)
print("I don't want this printed.")
warnings.filterwarnings("error", category=RuntimeWarning)
asyncio.run(main())
Exception ignored in: <coroutine object sleep at 0x7f1e4f3d1b40>
Traceback (most recent call last):
File "/home/teresaejunior/.asdf/installs/python/3.9.2/lib/python3.9/warnings.py", line 506, in _warn_unawaited_coroutine
warn(msg, category=RuntimeWarning, stacklevel=2, source=coro)
RuntimeWarning: coroutine 'sleep' was never awaited
I don't want this printed.
如何阻止Python忽略warnings
模块引发的异常
可悲的是,我不认为你可以,至少不以一种明显的方式。问题是,这个警告是在销毁协同路由对象时打印的,这是Python可以确定您永远不会等待协同路由的最早时间点
无法从析构函数引发异常,因为析构函数在垃圾收集期间和其他敏感时间运行。因此,当Python当时检测到异常时,它只是忽略它,正如消息所说
相关问题 更多 >
编程相关推荐