Если это важно для вас по-разному реагируют то вы должны поймать их по отдельности:
try:
do_something()
except HTTPError:
handle_HTTPError()
except URLError:
handle_URLError()
except socket.error:
handle socketerror()
Но если вы только означает, что вы хотите отобразить или войти ошибка типа вместе со своими аргументами, вы должны используйте ошибку repr
, вместо того, чтобы пытаться отформатировать ее самостоятельно. Например:
>>> try:
... raise IOError(911, "Ouch!")
... except IOError as e:
... print "error({0}):{1}".format(e.errno, e.strerror)
... print repr(e)
...
error(911):Ouch!
IOError(911, 'Ouch!')
С точки зрения информации, отображаемой, есть очень мало разницы между печатной строки вы положили вместе и просто собирается с repr
. Если вы действительно хотите «довольно» сообщения для печати или журнала, вы можете манипулировать строку к содержимому вашего сердца, но type(e)
не спасет вас никаких усилий, он не предназначен для отображения/протоколирования:
>>> type(e)
<type 'exceptions.IOError'>
Unnest в Try/и поймать кроме арматуры их по отдельности. Или используйте 'isinstance'. –