如何捕获非警告产生的警告。警告

时间:2019-05-27 14:51:30

标签: python python-3.x warnings

如果出现警告,我需要能够在代码中引发异常。例如,当比较字符串和字节对象'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

0 个答案:

没有答案