Избежание предупреждения" слишком широкое исключение " в PyCharm

Я пишу предложение исключения на верхнем уровне скрипта, и я просто хочу, чтобы оно регистрировало любые ошибки. Досадно, PyCharm жалуется, если я просто поймать Exception.

import logging

logging.basicConfig()

try:
    raise RuntimeError('Bad stuff happened.')
except Exception:  # <= causes warning: Too broad exception clause
    logging.error('Failed.', exc_info=True)

что-то не так с этим обработчиком? Если нет, то как я могу сказать PyCharm заткнуться об этом?

2 ответов


из комментарий Джоран: вы можете использовать # noinspection PyBroadException чтобы сказать PyCharm, что вы в порядке с этим предложением исключения. Это то, что я изначально искал, но я пропустил опцию подавить инспекции в меню предложения.

import logging

logging.basicConfig()

# noinspection PyBroadException
try:
    raise RuntimeError('Bad stuff happened.')
except Exception:
    logging.error('Failed.', exc_info=True)

я нашел подсказку в этом закрытом запрос для PyCharm:

Я предлагаю вам отметить эту проверку как "хорошо", если блок except использует экземпляр исключения e почему-то.

потому что я захожу с exc_info=True, Я неявно использую текущий объект исключения, но PyCharm этого не знает. Чтобы сделать его явным, я могу сделать что-то немного суховато: exc_info можно использовать любое значение truthy для включения трассировки стека в бревно. Объект исключения должен быть правдивым, потому что это не None.

import logging

logging.basicConfig()

try:
    raise RuntimeError('Bad stuff happened.')
except Exception as e:
    logging.error('Failed.', exc_info=e)