潭州课堂25班:Ph201805201 第十四课 异常,处理 (课堂笔记)

程序难免会出现错误 :

  语法错误 ;

  逻辑错误;

AttributeError  -->>  试图访问一个对象没有的属性,

IOError  ----》》  输入输出异常

IndeError  ---->>   下标索引起出序例范围,

KeyError --->>>>  试图访问字典里不存在的key

NameError  ---->>. 使用一个还未被赋值的对象变量,

SyntaxError ----->>>  语法错误

TypeError ----->>>>  传入对象类型与要求的不符合,

UnboundLocalError ----->>  试图访问一个清空未被设置的局部变量,

ValueError -----》》》  传入一个调用者不期望的值,

捕捉异常:

try:

          ….

          ….

except:

    print ('出错')

try:

    f = open('我为什么是个文件.txt')

    print (f. read() )

    f.close()

except OSError:

  print ('文件出错')

找不到”” 我为什么是个文件.txt”这个文件

try:

    f = open('我为什么是个文件.txt')

    print (f. read() )

    f.close()

except OSError as reason:

  print ('文件出错 出错的原因是:'+str(reason))

———》》》》

    文件出错
    出错的原因是:[Errno 2] No such file or directory: '我为什么是个文件.txt'

try:

    x = 1+'1'

    f = open('我为什么是个文件.txt')

    print (f. read() )

    f.close()

except (OSError, TypeError):      #    只要育错就抱错

    print ('出错')

————》》》

    出错

异常处理的细分写法:
# 异常处理的细分写法:
try :
    li = [11,22]
    li[0]
    int ('abc')

except IndexError as e:         #   一层比一层高的级别
    print('IndexError',e)
except ValueError as f:
    print('ValueError',f)
except Exception as h:
    print('Exception',h)

else:               #   如果上边不出错,就执行这里的代码
    print('else')
finally:                #   不管出不出错,这里都 要执行,
    print('......')

  

断言,主动触发异常

主动触发异常:
try:
    raise Exception('主动触发异常')
except Exception as e:
    print(e)

断言:
print(123)
assert 1==1     #   断言,条件成立 往下走,不成立 报错
print(456)

  

原文地址:https://www.cnblogs.com/gdwz922/p/9203521.html