+-
python – 为urllib2.urlopen()遇到麻烦引发异常
我正在使用以下代码,我无法弄清楚为什么当urlopen()失败时它不会引发异常.

在我的特殊情况下,我知道为什么它失败..我的网址没有http://在他们面前…但我想抓住这些情况,以便脚本可以继续运行我的代码而不是退出.

    req = urllib2.Request(link)
    try:
        url = urllib2.urlopen(req)
    except urllib2.URLError, e:
        print e.code
        print e.read()
        return False

而我正在……

Traceback (most recent call last):
File "./getURLs.py", line 141, in <module>
main()
File "./getURLs.py", line 82, in main
Process(args).get_children()
File "./getURLs.py", line 65, in get_children
self.get_links(link)
File "./getURLs.py", line 46, in get_links
data = urllib2.urlopen(req)
File "/usr/local/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/local/lib/python2.7/urllib2.py", line 383, in open
protocol = req.get_type()
File "/usr/local/lib/python2.7/urllib2.py", line 244, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: /

.
.
.

对于任何对我的特定解决方案感兴趣的人..我正在使用以下内容来捕获这两个异常.

req = urllib2.Request(link)
    try:
        url = urllib2.urlopen(req)
    except (ValueError,urllib2.URLError) as e:
        print e
        return False
最佳答案
从您粘贴的内容来看,您似乎正在捕获错误类型的异常.代码应该说

try:
    url=urllib2.urlopen(req)
except ValueError:
    # etc etc etc.

如果整个代码运行至关重要,那么除了以下内容之外,您还可以使用以下内容:使用未指定的异常类型,甚至是finally.见:http://docs.python.org/tutorial/errors.html

点击查看更多相关文章

转载注明原文:python – 为urllib2.urlopen()遇到麻烦引发异常 - 乐贴网