try:
r = requests.get(url, params={'s': thing})
except requests.ConnectionError, e:
print e #should I also sys.exit(1) after this?
Это правильно? Есть ли лучший способ структурировать это? Будет ли это охватывать все мои базы?
python
request
python-requests
Джон Смит
источник
источник
Ответы:
Взгляните на документацию по исключениям Requests . Короче говоря:
Чтобы ответить на ваш вопрос, то, что вы показываете, не будет охватывать все ваши базы. Вы будете ловить только ошибки, связанные с подключением, а не те, которые истекли.
Что делать, когда вы ловите исключение, действительно зависит от дизайна вашего скрипта / программы. Это приемлемо для выхода? Можете ли вы продолжить и попробовать еще раз? Если ошибка катастрофическая и вы не можете продолжить, тогда да, вы можете прервать свою программу, вызвав SystemExit (хороший способ как распечатать ошибку, так и вызвать
sys.exit
).Вы можете перехватить исключение базового класса, которое будет обрабатывать все случаи:
Или вы можете поймать их отдельно и делать разные вещи.
Как указал Кристиан :
Пример:
Распечатает:
источник
socket.timeout
исключения, если вы используете тайм-аут: github.com/kennethreitz/requests/issues/1236Еще одно предложение должно быть явным. Кажется, лучше всего перейти от конкретного к общему списку ошибок, чтобы получить желаемую ошибку, которая будет перехвачена, поэтому конкретные не будут маскироваться общим.
против
источник
Объект исключения также содержит оригинальный ответ
e.response
, который может быть полезен, если необходимо увидеть тело ошибки в ответе от сервера. Например:источник