python-14:异常处理

异常处理是python中对错误的另外一种处理方式
至于为何在爬虫代码中加入异常处理,异常处理是什么,在这里给你们两个网站,有兴趣的话能够仔细研究
1. http://python.jobbole.com/81341/ 伯乐在线,URL异常处理
2. http://www.runoob.com/python/python-exceptions.html 菜鸟教程,python异常处理
这两个网站已经讲得很详细了,你要是所有看完而且看懂了的话,那么下面我要讲的对你来讲就是小儿科,可是,若是你跟本没看或者看了以后发现太难了看不下去,这也不要紧,由于咱们如今还用不到这么多
咱们要知道的只有3个问题:
    1. 什么是异常处理
    2. 为何要加入异常处理
    3. 怎么使用异常处理
 
1. 什么是异常处理
    异常是指程序中的例外,违例状况,简单的说就是程序运行中出现的错误
    异常处理是程序出现错误以后的处理方法

2. 为何要加入异常处理
    程序的运行过程当中哪一个地方都有可能出现错误,因此咱们须要对程序运行中出现的错误进行处理,这个处理可能有不少种方式,包括输出错误信息或者执行什么操做等等

3. 怎么使用异常处理
    在程序运行的过程当中,若是发生了错误,能够事先约定返 回一个错误代码,这样,就能够知道是否有错,以及出错的缘由
    python中使用try/except语句来进行异常处理
   try用来检测语句中的错误,从而让except语句捕获异常信息并处理
   当咱们认为某些代码可能会出错时,就能够用try来运行这段代码,若是执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即except语句块

下面来看一个简单的例子:
html

try:

    print 'try...'
    r = 10 / 0
    print 'result:', r

    # ZeroDivisionError 是错误的类型,在程序运行以前咱们应该预测程序可能会出现什么错误
    # e是遇到错误时输出的信息,e,将这个信息返回
except ZeroDivisionError, e:

    print 'except:', e

输出结果是:
python

上面的程序中由于被除数是0,因此返回的错误信息是integer division or modulo by zero,而这个信息是存在e这个变量中

在浏览网页的过程当中,可能会遇到网址不存在或者链接超时等各类状况,而咱们运行爬虫程序时也同样,在爬虫中,咱们遇到的错误类型主要有两类
1. URLError,可能产生的缘由:
    1. 网络无链接,即本机没法上网
    2. 链接不到特定的服务器
    3. 服务器不存在
2.  HTTPError
    HTTPError是URLError的子类,在你利用urlopen方法发出一个请求时,服务器上都会对应一个应答对象response,其中它包含一个数字"状态码"
    这样说你们可能不明白,那再换一个说法,当咱们打不开网页时,会出现404,502等等的提示,这个404,502就是状态码,我会在下一篇将网上找到的HTTPError错误码列举出来,一样,不想看的话也能够不看

咱们刚刚说道错误有两个,可是咱们一般用URLError,由于URLError是父类,HTTPError是URLError的子类

说了这么久,最终的目的是要在咱们的代码中加入异常处理,来看看代码:
服务器

#!/uer/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'
'''
加入异常处理
'''

import urllib2

url = 'http://www.qiushibaike.com/'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}
try:

    request = urllib2.Request(url,headers=headers)

    response = urllib2.urlopen(request)

    print response.read().decode("gbk")
except urllib2.URLError,e:

    if hasattr(e,"code"):

        print e.code

    if hasattr(e,"reason"):

        print e.reason
相关文章
相关标签/搜索