我有这个命令检查命令是否在Python中遇到了一些麻烦?
h = urllib.urlopen("http://google.com/")
我如何检查是否它检索我一些错误,网络故障或一些我不期待?
例如,像
如果错误 打印 '错误'
谢谢你,因为它是在Python 3.0去除
我有这个命令检查命令是否在Python中遇到了一些麻烦?
h = urllib.urlopen("http://google.com/")
我如何检查是否它检索我一些错误,网络故障或一些我不期待?
例如,像
如果错误 打印 '错误'
谢谢你,因为它是在Python 3.0去除
urllib.urlopen
已被弃用。改为使用urllib2.urlopen
,并在文档中提到:
对错误引发
URLError
。
所以做:
try:
h = urllib2.urlopen("http://google.com/")
except urllib2.URLError as e:
# do something with the exception e.g.
print 'Error:', e.reason
或只是一个(无意义的)错误消息:
try:
h = urllib2.urlopen("http://google.com/")
except urllib2.URLError:
print 'An error occurred.'
URLError
:
例外? n urllib2.URLError
处理程序在遇到问题时引发此异常(或派生异常)。它是
IOError
的一个子类。原因
此错误的原因。它可以是消息字符串或其他异常实例(远程URL为socket.error
,本地URL为OSError
)。
你可能想了解Errors and Exceptions。
我相信错误时会引发异常。如果你捕捉到并使用错误代码,你可以轻松地做适当的错误处理。
可能会发生异常,例如IOError
- 您可以使用异常处理来处理此问题。例如:
try:
h = urllib.urlopen("http://google.com/")
except IOError as e:
print "Error opening URL"
如果是不能够做一些有意义的,它会引发异常,您可以与try
/except
接受。
urllib.urlopen
已弃用urllib2.urlopen
。
>>> import urllib2
>>> urllib2.urlopen('not a valid URL')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
ValueError: unknown url type: not a valid URL
>>>
>>> urllib2.urlopen("http://thiswebsitedoesntexistq.com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
...
urllib2.HTTPError: HTTP Error 404: Not Found
>>>
>>> # URLError is the parent class for the errors raised by urlopen
... # if it can parse the URL
...
>>> issubclass(urllib2.HTTPError, urllib2.URLError)
True
我能赶上这些像
try:
urllib2.urlopen(some_url)
except ValueError:
print "Not a real URL"
except urllib2.HTTPError:
print "%s does not exist" % (some_url,)
或者我可以让,如果我没有有一些理智的方式来反应他们传播。 (通常人们想要捕捉一个错误,以便他们能够打印错误并关闭他们的程序,这通常很愚蠢,因为如果你没有捕捉并修复错误,那么Python就会这么做。)
但是有没有变量适用于所有可能的错误?例如IOError? – Shady 2010-04-30 16:28:18
@Shady:那么你可以使用'except:'而不必提到要捕获哪个异常。这将捕获所有的例外,但应该避免。通常你应该总是指定你想要捕获的*哪个*错误。 – 2010-04-30 17:53:27