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

时间:2022-11-28 16:18:39

程序难免会出现错误 :

  语法错误 ;

  逻辑错误;

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 ('文件出错\n出错的原因是:'+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)