Я сомневаюсь в дизайне обработки ошибок. В этом случае заманчиво просто написать: < /p>
result = my_list[0]
< /code>
Риск, конечно, состоит в том, что если список пуст, он поднимет индексерр. Когда это произойдет, конечный пользователь не видит Traceback - вместо этого он просто видит общее сообщение, в котором говорится, что им связаться с нашим отделом, и мы получаем полную информацию об ошибке в Sentry.
, поэтому мой вопрос: < /p>
Должен ли я оставить код, как есть (my_list [0]), и позволить Sentry поймать ошибку, если что -то неожиданное происходит? это: < /p>
if len(my_list) != 1:
# Raise a business error (created by xml)
< /code>
Второй подход будет означать создание многих дополнительных ошибок, связанных с пользователем для случаев, которые, в принципе, никогда не должны происходить-случаи, которые больше похожи на ошибки, чем на действительные условия для бизнеса. < /p>
Как вы обычно обращаетесь с этим компромиссом? Позволяете ли вы обрабатывать непредвиденные ошибки (например, индексерр), или вы предпочитаете явно повышать контролируемые ошибки даже для сценариев, которые «никогда не должны случиться»?
Подробнее здесь: https://stackoverflow.com/questions/797 ... error-vs-e
Как обрабатывать случаи, когда список всегда должен иметь один элемент (индексерра против явного проверки) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение