Мне нужно вызывать исключения в моем коде, если выдается предупреждение.Например, при сравнении строки и объекта байтов, '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