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