"""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后跟类名是无参构造实例"""