异常的语法:
try:
这里放可能出现异常的代码
except 异常的类型:
当异常发生时并且与异常类型匹配
执行except中的代码
注意:一旦try中代码抛出异常,后面的代码全部不执行
基本语法:
print("之前的代码") try: class Foo: pass f1 = Foo() f1.x except AttributeError: print("属性不存在") print("之后的代码")
面对代码段中可能有多种异常,单一异常并不能接住异常,所以可以使用多种异常处理的机制。
print("staring.....") try: # name [][-1] pass except NameError: print("名字找不到!") except IndexError: print("索引超出范围") print("end.......")
上面的多种异常接受也可写成:
print("staring.....") try: # name [][-1] pass except (NameError,IndexError): print("名字找不到! 或者 索引超出范围") print("end.......")
基于上面两种异常接受方法,虽然可以接受很多异常,但是没有接受全部异常,毕竟异常太多
同时异常也是个特殊的类型,那么就有万能异常类型Exception或者BaseException 这也是一种基于oop的继承和多态。
print("staring.....") try: # {}["aaa"] # name # [][-1] 1/0 except Exception: print("可能名字找不到! 可能所以超出范围 可能除数为0") print("end.......")
其他语法
try: # 1/0 # [][2] pass except Exception: print("抛出异常") else:#当代码没有异常抛出,才会执行 print("代码中没有异常")
try: # 1/0 # [][2] pass except Exception: print("抛出异常") else:#当代码没有异常抛出,才会执行 print("代码中没有异常") finally: print("无论是否有异常,都会执行")
finally:主要用于回收检验异常代码的系统资源
try: f = open(r"D:上海python全栈4期day31异常处理1今日内容","rt",encoding="utf-8") f.read() # f.write("123") except Exception: print("发生异常了") finally: print("关闭文件!") f.close()