码迷,mamicode.com
首页 > 编程语言 > 详细

python(二) sanurllib2.URLError

时间:2018-10-12 19:28:43      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:erro   一个   ror   需要   ==   exce   import   strong   捕获异常   

1.URLError

import urllib2

if name == ‘main‘ :

url = ‘http://www.567.com‘
req = urllib2.Request(url)

try:
    response = urllib2.urlopen(req)
    #print response
    html = response.read().decode(‘utf-8‘)
    print html

except urllib2.URLError as e :
    print e.reason

结果 :
URLError

[Errno 11004] getaddrinfo failed

2.HTTPError

import urllib2

if name == ‘main‘ :

url = ‘http://money.163.com/stocks/‘
req = urllib2.Request(url)

try:
    response = urllib2.urlopen(req)
    #html = response.read()
except urllib2.HTTPError as e:
    print e.code

         结果:404

        3,URLError和HTTPError混合使用

????如果想用HTTPError和URLError一起捕获异常,那么需要将HTTPError放在URLError的前面,因为HTTPError是URLError的一个子类。如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了。

一种方法:
import urllib2

if name == ‘main‘ :

url = ‘http://news.baidu.net‘
req = urllib2.Request(url)

try :
    response = urllib2.urlopen(req)
    html = response.read().decode(‘utf-8‘)
    print html

except urllib2.HTTPError as e:
    print ‘HTTPError‘
    print e.code
except urllib2.URLError as e:
    print ‘URLError‘
    print e.reason   

    二种方法使用函数hasattr():
    if __name__ == ‘__main__‘ :

url = ‘http://www.567.com‘
req = urllib2.Request(url)

try:
    response = urllib2.urlopen(req)
    html = response.read().decode(‘utf-8‘)
    print html

except urllib2.URLError as e :

    if hasattr(e,‘code‘) :
        print ‘HTTPError‘
        print e.code
    elif hasattr(e,‘reason‘) :
        print ‘URLError‘
        print e.reason

python(二) sanurllib2.URLError

标签:erro   一个   ror   需要   ==   exce   import   strong   捕获异常   

原文地址:http://blog.51cto.com/7175088/2299308

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!