异常处理的使用

异常的语法:

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()

 

posted @ 2018-11-01 16:14  msjaxuexi  阅读(141)  评论(0编辑  收藏  举报