异常

异常

常用异常:

# 捕获异常 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给给用户,而是实现一个提示的页面,通俗地说就是不让用户看到大黄页
# python中的异常种类非常多,每个异常专门用于处理某一项异常!!!

# AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
# IOError 输入/输出异常;基本上是无法打开文件
# ImportError 无法引入模块或包;基本上是路径问题或名称错误
# IndentationError 语法错误(的子类) ;代码没有正确对齐
# IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
# KeyError 试图访问字典里不存在的键
# KeyboardInterrupt Ctrl+C被按下
# NameError 使用一个还未被赋予对象的变量
# SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
# TypeError 传入对象类型与要求的不符合
# UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
# 导致你以为正在访问它
# ValueError 传入一个调用者不期望的值,即使值的类型是正确的

捕获异常:
# IndentationError和SyntaxError 异常无法捕获
person=['Mike','Jane']
try:
    print(person[2])
except IndexError as e:
    print(e)

dict={'':'Mike'}
try:

    print(dict['sn'])
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except IndexError as e:
    print(e)
except Exception as e: #万能异常:Exception,他可以捕获任意异常
    print(e)
#对于特殊处理或提醒的异常需要先定义,最后定义Exception来确保程序正常运行。

#主动触发异常
try:
    raise Exception('出错了。。。')
except Exception as e:
    print(e)

# 异常其他结构
try:
    #主代码块
    pass
except KeyError as e:
    #出现异常时执行该块
    pass
else:
    #主代码块执行完成后执行
    pass
finally:
    #无论异常与否,最终执行该块
    pass
View Code

自定义异常:
class MyError(Exception):#Exception所有异常的基类
    def __init__(self,msg):
        self.msg=msg
    # def __str__(self): #因为MyError继承Exception,所以不用重构__str__方法也可以
    #     return self.msg

try:
    raise MyError('我的错误。。。')
except MyError as e:
    print(e)
View Code

 

posted @ 2017-02-22 20:58  似是故人来~  阅读(131)  评论(0编辑  收藏  举报