У меня есть странная проблема. Чтобы иметь короткий минимальный рабочий пример (MWE), давайте предположим, что Connect () возвращает объект urllib3.connection.httpconnection . Давайте также предположим, что у меня есть другие исключения, которые я хочу игнорировать, если «Magicword» найдено в сообщении об ошибке (не фактическое слово, но эй, это MWE).
mwe: < /strong> < /p>
try:
conn_obj = Connect()
except Exception as e: # there are some other exceptions I want to ignore
if 'magicword' not in e.message:
print 'fatal error: {}'.format(e.message)
< /code>
Это прекрасно работает на моей машине и печатает «фатальная ошибка», когда встречается и игнорирует другие исключения (как и в этом случае). < /p>
Однако на машине коллеги ошибка не обрабатывается и вместо этого вылетает и создает след. Это та же самая ошибка на моей машине, только его не печатает и сбои, вместо того, чтобы быть обработанным. Мы оба используем одну и ту же ОС (Windows 7). < /P>
Очевидно, что конкретное исключение не идеально, поэтому я попробовал этот маршрут: < /p>
from urllib3.exceptions import NewConnectionError
try:
conn_obj = Connect()
except NewConnectionError as nce:
print 'fatal error: {}'.format(e.message)
except Exception as e: # there are some other exceptions I want to ignore
if 'magicword' not in e.message:
print 'fatal error: {}'.format(e.message)
< /code>
Это тоже не сработало. По какой -то причине это не поймет исключение на его коробке. Почему исключение может быть обработано на моей машине, но не на его? Объект подключения поднимается внутри сторонней библиотеки Pyelasticsearch. Я всегда мог поймать это просто отлично, но его не поймают, используя один и тот же код на других машинах. Вот файл, который я написал, чтобы проверить, если ошибка была поймана при явном поднятии: < /p>
from urllib3.exceptions import NewConnectionError
def error_test(test_num):
print '\n\n'
try:
if test_num == 1:
print 'TEST 1: See if NewConnectionError is caught specifically'
raise NewConnectionError('no pool', 'test one')
elif test_num == 2:
print 'TEST 2: See if RuntimeError is caught related to magicword'
raise RuntimeError('test two magicword catching test')
elif test_num == 3:
print 'TEST 3: See if RuntimeError is caught NOT related to magicword'
raise RuntimeError('test three')
except NewConnectionError as nce:
print 'Test 1 passed successfully.\n\n{}'.format(nce.message)
except Exception as e:
if 'magicword' not in e.message:
print 'Test 3 passed successfully.\n\n{}'.format(e.message)
else:
print 'Test 2 passed successfully.\n\n{}'.format(e.message)
error_test(1)
error_test(2)
error_test(3)
< /code>
Этот тест прекрасно работал на обеих наших машинах. Так что каким-то образом, получая стороннюю библиотеку, связанную с тем, что что-то противоречивое между нашими машинами (на самом деле это в бинарном компилировании Pyinstaller, поэтому библиотечные различия не должны вступать в игру).
Подробнее здесь: https://stackoverflow.com/questions/337 ... -not-on-an
Urllib3.exceptions.newconnectionError ошибка, обрабатываемая на одной машине, но не на другой ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Запуск искрового снаряда прошел успешно на одной машине, но не удалось на другой машине
Anonymous » » в форуме JAVA - 0 Ответы
- 71 Просмотры
-
Последнее сообщение Anonymous
-