Перехват всех исключений для более легкой отладки после развертывания моего приложения - PullRequest
0 голосов
/ 14 декабря 2018

Начинающий программист здесь.Я формулирую этот вопрос на языке Python, но думаю, что это имеет смысл для любого языка программирования, который имеет концепцию обработки исключений.

Вот оно: я пишу программное обеспечение для бизнес-клиента,кто будет взаимодействовать с программным обеспечением с помощью графического интерфейса.

Я думаю о том, чтобы поместить всю основную бизнес-логику в блок try / except, чтобы перехватывать все исключения, которых у меня нетпланируется (и что я поймаю и решу, прежде чем они всплывают).Это могут быть ошибки в других библиотеках, которые я использую, мои собственные ошибки или другие непредвиденные события.Вывод этих исключений я хочу затем отобразить в сообщении об ошибке графического интерфейса.

Причиной этого будет то, что если такая ошибка возникнет, когда мое программное обеспечение будет развернуто, и клиент позвонит мне и скажет мне "эй, я получил это сообщение об ошибке «X», тогда у меня был бы хотя бы какой-то намек от X о том, что пошло не так, и я мог немедленно начать отладку - вместо того, чтобы GUI просто молча выходил и клиент звонил мне и говорил «ваше приложениетолько что умер ".

1) Это было бы хорошей идеей?Поскольку это программное обеспечение будет использоваться в «безопасных настройках», не возникает проблема утечки конфиденциальной информации в сообщение об ошибке, которое затем отображается.Но я все еще не уверен, нет ли других проблем, с которыми я мог бы столкнуться при таком подходе.

2) Если я должен идти по этому пути, я должен использовать except BaseException или except Exception?
Даже после консультации Иерархия исключений Python Я действительно не понимаю, когда три дополнительных исключения, которые я получил бы, если бы я использовал первый вариант, действительно были выброшены.Мое приложение не будет использовать клавиатуру, поэтому я думаю Я в безопасности относительно KeyboardInterrupt, но я не уверен насчет двух других SystemExit и GeneratorExit.

1 Ответ

0 голосов
/ 14 декабря 2018
  1. Показывать сообщения об ошибках в вашем графическом интерфейсе только в том случае, если пользователю необходимо знать , например, когда программа не может восстановиться после ошибки.

  2. Используйте except BaseException, чтобы избежать перехвата исключений, которые должны обрабатываться по-другому.Если вам нужно перехватить все типы исключений, постарайтесь создать как можно больше except блоков, чтобы восстановить как можно больше ошибок.

...