[2015-08-19] python025

try-except-else-finally语句:
语法: 
    try:
        try_suite
    except Exception1:
        suite_exception1
    except (Exception2,Exception3):
        suite23_exception23
    ...
    else:
        else_suite 
    finally:
        finally_suite 

    可以替换为在try-finally语句中嵌套try-except语句的形式

自定义异常:

raise语句可显式触发异常:
    raise [SomeException [,args [,traceback]]]
        SomeException:可选,异常的名字,仅能使用字符串、类或实例
        args:可选,以元组的形式传递给异常的参数
        traceback:可选,异常触发时新生成的一个用于异常-正常化的跟踪记录,多用于重新引发异常时

异常对象:

  • Python异常是内置的经典类Exception的子类的实例
    • 为了向后兼容,Python还允许使用字符串或任何经典类实例
    • Python2.5之后,Exception是从BaseException继承的新式类
  • Python自身引发的所有异常都是Exception的子类的实例
  • 大多的标准异常都是由StandardError派生的,其有3个抽象的子类:
    • ArithmeticError
      • 由于算术错误而引发的异常基类
      • OverflowError, ZeroDivisionError, FloatingPointError
    • LookupError
      • 容器在接收到一个无效键或索引时引发的异常的基类
      • IndexError,KeyError
    • EnvironmentError
      • 由于外部原因而导致的异常的基类
      • IOError, OSError, WindowsError

标准异常类:

  • AssertionError
    • 断言语句失败
  • AttributeError
    • 属性引用或赋值失效
  • FloatingPointError
    • 浮点型运算失败
  • IOError
    • I/O操作失败
  • ImportError
    • import语句不能找到要导入的模块,或者不能找到该模块特别请求的名称
  • IndentationError
    • 解析器遇到了一个由于错误的缩进而引发的语法错误
  • IndexError
    • 用来索引序列的整数超出了范围
  • KeyError
    • 用来索引映射的键不在映射中
  • KeyboardInterrupt
    • 用户按了中断键(Ctrl+c,Ctrl+Break或Delete键)
  • MemoryError
    • 运算耗尽内存
  • NameError
    • 引用了一个不存在的变量名
  • NotImplementedError
    • 由抽象基类引发的异常,用于指示一个具体的子类必须覆盖的一个方法
  • OSError
    • 由模块os中的函数引发的异常,用来指示平台相关的错误
  • OverflowError
    • 整数运算的结果太大导致溢出
  • SyntaxError
    • 语法错误
  • SystemError
    • Python本身或某些扩展模块中的内部错误
  • TypeError
    • 对某对象执行了不支持的操作
  • UnboundLocalError
    • 引用未绑定值的本地变量
  • UnicodeError
    • 在Unicode的字符串之间进行转换时发生的错误
  • ValueError
    • 应用于某个对象的操作或函数,这个对象具有正确的类型,但确有不适当的值
  • WindowsError
    • 模块os中的函数引发的异常,用来指示与Windows相关的错误
  • ZeroDivisionError
    • 除数为0

自定义异常类:

自定义异常和多重继承:
    较有效的方法是从自定义异常类和标准异常类进行多重继承,例如
        class CustomAttributeError(CustomException,AttributeError):
            pass 
标准库中使用的其他异常:
    Python标准库中的许多模块都定义了自己的异常类,如socket中的socket.error
        等同于自定义的异常类

assert语句:

assert语句用于在程序中引入调试代码
    assert condition[, expression]
        如果condition条件满足,则assert不做任何操作
        如果condition条件不满足,则assert使用expression作为参数实例化AssertionError并引发结果实例
注意:
    如果运行Python时使用了-O优化选项,则assert将是一个空操作:编译器不为assert语句生成代码
    运行Python时不使用-O选项,则__debug__内置变量为True,否则其值为False

assert语句相当于下面的代码:
    if __debug__:
        if not condition:
            raise AssertionError, <expression>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值