检测引发异常的原因
Detect what raises an exception
我制作了一个 Python 2.7.9 脚本,它使用 urllib.urlretrieve
从网上下载一些照片。我使用 try
和 except
命令做了一个简单的错误听写,如下所示:
try:
urllib.urlretrieve("http://example.com/image.jpg", "1.jpg")
except IOError:
print "Could not connect to 'example.com'!"
但是,我意识到当硬盘驱动器上没有 space 时,也可以引发 IOError
。我想检测引发 IOError 的原因(无法连接到 example.com/no space left),并显示正确的错误消息。
我该怎么做?谢谢!
正如 zoosuck 所说,您可以通过多个 except-Statement 来区分错误。如果您想区分 IOError,请查看 IOError 的文档。它揭示了 IOError 有一个属性 "errno"。您可以使用 errno 模块 (https://docs.python.org/2/library/errno.html) 来确定原因:
import urllib
import errno
try:
urllib.urlretrieve("http://example.com/image.jpg", "1.jpg")
except IOError, e:
if e.errno == errno.ENOSPC:
print "No space left on device"
else:
print "Could not connect to 'example.com'!"
我制作了一个 Python 2.7.9 脚本,它使用 urllib.urlretrieve
从网上下载一些照片。我使用 try
和 except
命令做了一个简单的错误听写,如下所示:
try:
urllib.urlretrieve("http://example.com/image.jpg", "1.jpg")
except IOError:
print "Could not connect to 'example.com'!"
但是,我意识到当硬盘驱动器上没有 space 时,也可以引发 IOError
。我想检测引发 IOError 的原因(无法连接到 example.com/no space left),并显示正确的错误消息。
我该怎么做?谢谢!
正如 zoosuck 所说,您可以通过多个 except-Statement 来区分错误。如果您想区分 IOError,请查看 IOError 的文档。它揭示了 IOError 有一个属性 "errno"。您可以使用 errno 模块 (https://docs.python.org/2/library/errno.html) 来确定原因:
import urllib
import errno
try:
urllib.urlretrieve("http://example.com/image.jpg", "1.jpg")
except IOError, e:
if e.errno == errno.ENOSPC:
print "No space left on device"
else:
print "Could not connect to 'example.com'!"