Я столкнулся с очень странным поведением в Python, которое не согласовано.
...
except IOError as msg:
sys.exit("###ERROR IOError: %s" % (msg))
Обычно это выдает мне сообщение вроде:
###ERROR IOError: [Errno 13] Permission denied: 'filename'
В тех же случаях приведенный выше код дает мне tuple
вместо правильного сообщения об ошибке.
###ERROR IOError: (13, 'Permission denied')
Это очень странно, потому что во всех случаях исключения происходят из одного и того же метода python, codecs.open(...)
Что меня больше интересует, так это то, что если я уберу обработку, исключение достигнет верхних уровней с правильным текстом (полное сообщение об ошибке), всегда!
except IOError as msg:
print(msg)
raise msg
Приведенный выше пример будет всегда печатать полное сообщение, например IOError: [Errno 13] Permission denied: u'filename'
.
Почему это происходит и как мне это предотвратить, я не хочу давать пользователям неполные сообщения об ошибках.
Я хотел воспроизвести это поведение в тестовом файле, но я не смог воспроизвести это за пределами проекта.
Я подозреваю, что это как-то связано с использованием sys.exit()
, потому что print(msg)
даст хороший результат, но sys.exit
нет.