zoukankan      html  css  js  c++  java
  • Python 2.7 学习笔记 异常处理

    如同别的开发语言,python也支持异常处理机制。本文介绍下它的基本语法。

    一、异常的基本处理框架如下:

    try:
      业务代码
    except 异常类1:
      异常处理代码
    except 异常类2:
         异常处理代码
    except:
         异常处理代码
    finally:
           清理代码

    其中最后一个 except: 没有带异常类名,表示缺省处理,所有的前面没有处理的异常都会被它拦截。
    相当于 except Exception: ,因为所有的异常类的基类都是Exception。

    举个例子: 

    >>> try:
    ...     3/0
    ... except ZeroDivisionError:
    ...     print "zero"
    ... except:
    ...     print "error"
    ... finally:
    ...     print "end"
    ...
    zero
    end

    如果需要获取异常的详细信息,可以如下方式
    except  ZeroDivisionError,e:

    这时e就是抛出的异常对象,里面包含了异常的详细信息。

    二、抛出异常

    除了代码出现问题,python系统抛出内部异常外。开发这也可以自己抛出异常。如:

    #定义一个方法,方法中根据参数,可能抛出异常
    >>> def fun(para):
    ...     if not para:
    ...             raise ZeroDivisionError("test exception")
    
    #调用方法
    >>> fun(False)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 3, in fun
    ZeroDivisionError: test exception
    >>> fun(True)
    >>> try:
    ...     fun(False)
    ... except Exception,e:
    ...     print e
    ...
    test exception

    可以看出,在python中抛出异常,是通过语句 raise 异常类 或 raise 异常类(异常信息)

    三、自定义异常

    python中,所有异常类的基类使Exception类,可以继承Exception类 或它的子类来创建新的异常,如:

    #创建异常类
    >>> class MyException(Exception):
    ...     pass
    ...
    #define function
    >>> def test(para):
    ...     if not para:
    ...             raise MyException("test")
    ...
    #call function
    >>> try:
    ...     test(False)
    ... except MyException,e:
    ...     print e
    ...
    test

    上面代码首先定义了一个异常类,并在代码中使用了该异常类。

      

  • 相关阅读:
    Asp.net把UTF-8编码转换为GB2312编码
    润乾报表中文传参乱码的问题
    润乾报表中填报中文出现乱码
    SQL Developer不能删除和复制及部分键失效问题
    .NET类型转换的常用方式
    .net中三种数据类型转换区别((int),Int32.Parse() 和 Convert.toInt32() )
    什么是SFP光模块?
    什么是"双活"
    存储软件特性
    【分享】给自己的博客园添加一个板娘(可选)
  • 原文地址:https://www.cnblogs.com/51kata/p/5338626.html
Copyright © 2011-2022 走看看