• 张望
    2019-12-08
    设置timeout=0.1时的报错是socket.timeout: timed out而非urllib.error.URLError,那还是这样写吗?
    try:
         response3=urllib.request.urlopen('http://httpbin.org/get',timeout=1)
    except urllib.error.URLError as e:
         if isinstance(e.reason,socket.timeout):
             print('TIME OUT')

    这样写try之后还是报错socket.timeout: timed out
    展开

    作者回复: 您好, 这里想让大家知道可以实现更详细的错误提示,具体捕获的错误要根据实际情况来调整

    
    
  • zoey-lin
    2019-07-04
    老师,我的环境使用request.urlopen()后没有.read()方法,大概什么原因啊

    作者回复: 原因比较多了,把详细的代码和报错贴出来看下

    
    
  • rice5
    2019-05-05
    老师,我在if里面有 if isinstance(e.reason, socket.timeout):, 但run的时候还是没捕捉到异常,提示
    socket.timeout: timed out

    作者回复: 检查一下缩进是否有问题?

    
    
  • Andrew
    2019-03-11
    老师您好:
    按照例子里的写法还是会出异常
    是因为python版本的问题吗?
    python 3.6.7

    try:
        response3 = urllib.request.urlopen('http://httpbin.org/get', timeout=0.1)
    except urllib.error.URLError as e:
        if isinstance(e.reason, socket.timeout):
            print('TIME OUT')

    但是改成这样后就不会了
    except socket.timeout as e:
        print(e)

    因为这样捕获的输出结果是 <class 'socket.timeout'>
    except Exception as e:
        print(type(e))
    展开

    作者回复: 异常的返回是逐层返回的,所以特意给大家演示了一个
    except urllib.error.URLError as e:
        if isinstance(e.reason, socket.timeout):
            print('TIME OUT')
    这样的写法,请认真体会

    
    
我们在线,来聊聊吧