python(二) urllib2.URLError

本文深入探讨了Python中urllib2模块的URLError和HTTPError异常处理,通过实例展示了如何区分并捕获这两种错误,以及如何使用hasattr()函数进行更细致的错误判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://blog.51cto.com/7175088/2299308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值