Python研究学习--6--异常

版权声明:本文为博主原创文章,转载本站文章请注明作者和出处,请勿用于任何商业用途。 https://blog.csdn.net/wutianxu123/article/details/82503095

6.1 异常

就是将系统异常以另外一种直观的方式做处理,因为系统异常很难被大众所接受(主要是看不懂)。因此,将其直观化是很有必要的事情。
异常抛出机制:
1、如果运行时发生异常,先寻找相应的异常处理语句
2、若当前没有找到异常处理语句,会传递到上层函数寻找
3、若最外层函数(主函数)也没找到异常处理语句,则异常抛出

异常语句结构如下:

try:
    可能存在异常的代码段                     #可以是很多段代码!
except 异常类型1,变量(用于接收异常):        #异常类型是关键!
    处理语句
except 异常类型2,变量(用于接收异常):        #处理第二个异常
    处理语句
…………                                     #可以是很多except语句
else:
    如果没有抛出异常则执行的代码段
finally:                                 #通常用于文件关闭、释放锁、数据库链接返回地址池等
    不管是否抛出异常都执行的代码段
另外: 
    raise 异常类型(异常信息)                #自定义异常抛出。异常类型名不能随意瞎掰
    #注意异常类型必须是python的内部异常类型。章尾有讲解

代码实例:

# -*- coding:utf-8 -*-
filename=raw_input(u'输入操作的文件,注意格式:'.encode('gb2312'))

try:
    f1=open(filename)                #存在异常则直接跳转,不再向下执行
    print hello                      #hello未定义。如果以上不存在异常,则到该行跳转
    print "i am liming"              #如果以上顺利执行,则该行执行
except IOError,bian1:                #如果异常类型为IOError则执行
    print u"输入的文件不存在"
except NameError,bian2:              #如果异常类型为NameError则执行
    print u"内部变量调用错误"
#还可以执行很多except语句!
else:                                #如果try中没有异常则执行
    print u"显示这段证明没有异常"
finally:                             #无论是否有异常都执行
    if filename=="wenjian":
        raise IOError(u"这是自定义异常!".encode('gb2312'))     #自定义异常
    else:
        print u"老铁!没毛病!"
        f1.close()                   #finally通常用于文件关闭、释放锁、数据库链接返回地址池等

代码实例:

# -*- coding: UTF-8 -*-

try:
    fh = open("h:\\testrrrfile.txt", "w")           #打开文件
    try:                                            #try语句嵌套
        fh.write("这是一个测试文件,用于测试异常!!")     #往打开的文件中写入
    finally:
        print u"关闭文件"
        fh.close()
except IOError:
    print u"Error: 没有找到文件或读取文件失败"          #如果是只读模式且未找到文件

6.2 程序常见错误/异常类型

异常错误 解释
ArithmeticError 所有数值计算错误的基类
AssertionError 断言语句失败
AttributeError 对象没有这个属性
BaseException 所有异常的基类
DeprecationWarning 关于被弃用的特征的警告
EnvironmentError 操作系统错误的基类
EOFError 没有内建输入,到达EOF 标记
Exception 常规错误的基类
FloatingPointError 浮点计算错误
FutureWarning 关于构造将来语义会有改变的警告
GeneratorExit 生成器(generator)发生异常来通知退出
ImportError 导入模块/对象失败
IndentationError 缩进错误
IndexError 序列中没有此索引(index)
IOError 输入/输出操作失败
KeyboardInterrupt 用户中断执行(通常是输入^C)
KeyError 映射中没有这个键
LookupError 无效数据查询的基类
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
NotImplementedError 尚未实现的方法
OSError 操作系统错误
OverflowError 数值运算超出最大限制
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收的对象
RuntimeError 一般的运行时错误
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
StandardError 所有的内建标准异常的基类
StopIteration 迭代器没有更多的值
SyntaxError Python 语法错误
SyntaxWarning 可疑的语法的警告
SystemError 一般的解释器系统错误
SystemExit 解释器请求退出
TabError Tab 和空格混用
TypeError 对类型无效的操作
UnboundLocalError 访问未初始化的本地变量
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeError Unicode 相关的错误
UnicodeTranslateError Unicode 转换时错误
UserWarning 用户代码生成的警告
ValueError 传入无效的参数
Warning 警告的基类
WindowsError 系统调用失败
ZeroDivisionError 除(或取模)零 (所有数据类型)

猜你喜欢

转载自blog.csdn.net/wutianxu123/article/details/82503095