如果出现警告,我需要能够在代码中引发异常。例如,当比较字符串和字节对象'b' == b'g'
时,应引发BytesWarning。我可以使用-bb标志(例如,运行python -bb
)来捕获它,但是希望能够在代码本身内完成它。
我尝试使用warnings.filterwarnings('error', category=BytesWarning)
,但是它只能捕获warnings.warn()
产生的警告。
如何捕获不正确代码本身产生的警告?
编辑 一个简单的例子:
import warnings
warnings.filterwarnings('error', category=BytesWarning)
warnings.warn('message', BytesWarning)
给我
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
BytesWarning: message
但是如果我执行'b' == b'b'
而不是调用warnings.warn()
,它只会显示false。
带有-bb
标志:
~$ python -bb
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 'b' == b'b'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
BytesWarning: Comparison between bytes and string