Python 如何捕获非警告生成的警告。警告

Python 如何捕获非警告生成的警告。警告,python,python-3.x,warnings,Python,Python 3.x,Warnings,如果出现警告,我需要能够在代码中引发异常。例如,在对字符串和字节对象进行比较时,'b'==b'g',应引发BytesWarning。我可以用-bb标志捕捉它(即运行python-bb),但我希望能够在代码本身中完成它 我尝试过使用warnings.filterwarnings('error',category=BytesWarning),但它只捕获由warnings.warn()产生的警告 如何捕捉由不正确代码本身产生的警告 编辑 一个简单的例子: import warnings warning

如果出现警告,我需要能够在代码中引发异常。例如,在对字符串和字节对象进行比较时,
'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'
之类的操作,BytesWarning应该作为异常而不是警告引发。但是
'b'==b'b'
在py 3中为
False
,而在py 2中为
True
,因此不会引发
BytesWarning
?你可以直接引发一个异常否?如果你在运行解释器时添加-bb标志,
'b'==b'b'
,就会显示一个BytesWarning。啊,明白了,在python3上,就像
python3-bbc“'b'==b'b'”
我很困惑-你想引发一个异常还是一个警告?你能展示更多的代码来给出一个完整的可复制的例子吗?我想捕捉警告并引发一个异常。例如,如果用户尝试执行诸如
'b'==b'b'
之类的操作,BytesWarning应该作为异常而不是警告引发。但是
'b'==b'b'
在py 3中为
False
,而在py 2中为
True
,因此不会引发
BytesWarning
?您可以直接引发异常否?如果您在运行解释器时添加-bb标志,
'b'==b'b'
,将显示一个BytesWarning。啊,明白了,在python3上,只有像
python3-bbc“'b'==b'b'”
~$ 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