失败而不是打印“在中忽略异常:<coroutine…”

2024-04-25 00:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

当显式地告诉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模块引发的异常


Tags: inimportasynciomainexceptionsleepthisdon
1条回答
网友
1楼 · 发布于 2024-04-25 00:09:08

How can I stop Python from ignoring this exception?

可悲的是,我不认为你可以,至少不以一种明显的方式。问题是,这个警告是在销毁协同路由对象时打印的,这是Python可以确定您永远不会等待协同路由的最早时间点

无法从析构函数引发异常,因为析构函数在垃圾收集期间和其他敏感时间运行。因此,当Python当时检测到异常时,它只是忽略它,正如消息所说

相关问题 更多 >