python核心编程笔记(9)- 异常

来源:互联网 发布:jsp 图片存到数据库 编辑:程序博客网 时间:2024/04/29 07:37
chap 10 异常


1. 异常的写法:
    try:
        try_suite
    except Exception1:
        suite_for_Exception1
    except (Exception2, Exception3, Exception4):
        suite_for_Exceptions_2_3_and_4
    except Exception5, Argument5:
        suite_for_Exception5_plus_argument
    except (Exception6, Exception7), Argument67:
        suite_for_Exceptions6_and_7_plus_argument
    except:
        suite_for_all_other_exceptions
    else:
        no_exceptions_detected_suite
    finally:
        always_execute_suite
        
2. 上下文管理
    with语句
    with open('/etc/passwd', 'r') as f:
        for eachLine in f:
            # ...do stuff with eachLine or f...
    它会完成准备工作,比如试图打开一个文件,如果一切正常,把文件对象赋值给 f.然后用迭代器遍历文件中的每一行,当完成时,关闭文件.无论的在这一段代码的开始,中间,还是结束时发生异常,会执行清理的代码,此外文件仍会被自动的关闭.


3. 触发异常
    raise语句格式:raise [SomeException [, args [, traceback]]]
    
4. 断言
    assert expression[, arguments]
    eg.
    下面是我们如何用 try-except 语句捕获 AssertionError 异常:
    try:
        assert 1 == 0, 'One does not equal zero silly!'
    except AssertionError, args:
        print '%s: %s' % (args.__class__.__name__, args)
    从命令行执行上面的代码会导致如下的输出:
    AssertionError: One does not equal zero silly!
    
5. 标准异常
    下面是所有的 Python 当前的标准异常集,所有的异常都是内建的. 所以它们在脚本启动前或在互交命令行提示符出现时已经是可用的了
    BaseException           所有异常的基类
    SystemExit              python 解释器请求退出
    KeyboardInterrupt       用户中断执行(通常是输入^C)
    Exception               常规错误的基类
    StopIteration           迭代器没有更多的值
    GeneratorExit           生成器(generator)发生异常来通知退出
    SystemExit              Python 解释器请求退出
    StandardError           所有的内建标准异常的基类
    ArithmeticError         所有数值计算错误的基类
    FloatingPointError      浮点计算错误
    OverflowError           数值运算超出最大限制
    ZeroDivisionError       除(或取模)零 (所有数据类型)
    AssertionError          断言语句失败
    AttributeError          对象没有这个属性
    EOFError                没有内建输入,到达 EOF 标记
    EnvironmentError        操作系统错误的基类
    IOError                 输入/输出操作失败
    OSError                 操作系统错误
    WindowsError            Windows 系统调用失败
    ImportError             导入模块/对象失败
    KeyboardInterrupt       用户中断执行(通常是输入^C)
    LookupError             无效数据查询的基类
    IndexError              序列中没有没有此索引(index)
    KeyError                映射中没有这个键
    MemoryError             内存溢出错误(对于 Python 解释器不是致命的)
    NameError               未声明/初始化对象 (没有属性)
    UnboundLocalError       访问未初始化的本地变量
    ReferenceError          弱引用(Weak reference)试图访问已经垃圾回收了的对象
    RuntimeError            一般的运行时错误    
    NotImplementedError     尚未实现的方法
    SyntaxError             Python 语法错误
    IndentationError        缩进错误
    TabError                Tab 和空格混用
    SystemError             一般的解释器系统错误
    TypeError               对类型无效的操作
    ValueError              传入无效的参数
    UnicodeError            Unicode 相关的错误
    UnicodeDecodeError      Unicode 解码时的错误
    UnicodeEncodeError      Unicode 编码时错误
    UnicodeTranslateError   Unicode 转换时错误
    Warning                 警告的基类
    DeprecationWarning      关于被弃用的特征的警告
    FutureWarning           关于构造将来语义会有改变的警告
    OverflowWarning         旧的关于自动提升为长整型(long)的警告
    PendingDeprecationWarning   关于特性将会被废弃的警告
    RuntimeWarning          可疑的运行时行为(runtime behavior)的警告
    SyntaxWarning           可疑的语法的警告
    UserWarning             用户代码生成的警告
0 0
原创粉丝点击