Python学习之异常处理

可紊 提交于 2019-11-29 04:59:55
"""Error逻辑错误: 算法写错 加法写成减法笔误: 变量名写错了,语法错误函数或类使用错误, 其实这也属于逻辑错误错误可以避免""""""异常 Exception意外情况异常是可以捕获 并被处理,错误是不能捕获 错误尽可能避免异常类的继承BaseExceptionException是所有内建的、非系统退出的异常的基类 自定义异常应该继承它SyntaxError 语法异常ArithmeticError 所有算术计算引发的异常 LookupError 使用映射的键或索引的无效时引发的异常的基类:IndexError KeyError"""
f= Nonetry:  # 不会开辟新的作用域    f = open("te")except:    passfinally:    if f is not None:        f.close()print("outer")print(dir())  # 收集当前模块的所有信息def foo():    try:        1/0        return 123    except:        pass    finally:        return 567        print('fin')print("result={}".format(foo())) # 函数的返回值取决于最后一个执行的return语句
try:    1/0except ArithmeticError:    print("Ari")except:    print('exc')else:    print('else')finally:    print('fin')"""1.如果try中语句执行时发生异常,搜索except子句,并执行第一个匹配该异常的except子句2.如果try中语句执行时发生异常,却没有匹配的except子句,异常将被递交到外层的try,如果外层不处理这个异常,异常将继续想外层传递。如果都不处理该异常,则会传递到最外层,如果还没有处理,就终止异常所在线程3.如果try执行时没有发生异常,将执行else子句中的语句4.无论try中是否发生异常,finally子句最终都会执行"""
try:    f= open('test')except:  #  异常捕获交给except    passclass MyException(Exception):    passtry:    # 1/0    open('test')    raise MyException("My Error")except OSError:    print("os")except ZeroDivisionError:    print("0")except MyException:    print("my")except InterruptedError:    print("IN")except:    print("exc")finally:     # 不管有没有异常 都执行 清理工作 资源释放 同上下文管理器    print("fin")print("outer")"""捕获是从上到下依次比较 如果匹配 则执行匹配的excepot语句块如果被一个except语句捕获 其他的except语句就不会再次捕获了如果没有任何一个except语句捕获到这个异常,则异常向外抛出 本质是异常的实例:raise后跟类名是无参构造实例"""

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!