本文所有例题全部来自
仅作自学使用,侵删。
一、什么是异常
我们知道写程序的时候有时候会出现一些错误导致报错
比如打开一个不存在文件,
这个时候需要一种语句使得如果出现异常就执行另一种解决方案
让程序不报错,使程序能够继续向下执行
二、异常语法的格式
一、如果错了就怎样语句
try:
可能会出错的语句
except:
如果出现异常执行的代码
try:
f=open('test.txt','r')
except:
f=open('test.txt','w')
注意,try下方一般只执行一行代码。
有时候异常里面也会出现错误,这个时候为了减少可能会出现的错误,通常会确定指定类型的异常才能触发异常执行
比如
捕获一种类型的异常
try:
print(num)
except NameError:
print('有错误')
异常类型有很多,bug多了就懂了
捕获多种类型的异常
try:
print(1/0)
except (NameError,ZeroDivisionError):
print('有错误')
对异常类型进行解释
try:
print(1/0)
except (NameError,ZeroDivisionError) as result:
print(result)
捕获所有异常
try:
print(1/0)
except Exception as result:
print(result)
注:Exception是所有异常的父类
二、如果错了就怎样,如果没错又怎样语句
try:
print(1/1)
except Exception as result:
print(result)
else:
print('当没有异常的时候执行的代码')
三、如果错了就怎样,如果没错又怎样,不管怎么样,最后都怎么样
try:
print(1/1)
except Exception as result:
print(result)
else:
print('当没有异常的时候执行的代码')
finally:
print('异常处理结束了')
三、了解异常传递
import time
try:
f=open('test.txt')#通过了第一层异常之后
try:
while True:
contint=f.readline()
if len(contint)==0:
break
#每隔两秒读取一次数据,并且输出,直到数据读取完成为止
time.sleep(2)
print(contint)
except:
print('意外终止了读取数据')
finally:
f.close()
print('关闭文件')
四、自定义异常类
#自定义异常类
class ShortInputError(Exception):
def __init__(self,length,min_len):
self.length=length
self.min_len=min_len
#创建了一个异常类,这个类有什么特点
def __str__(self):
return f'你输入的长度是{self.length},不能少于{self.min_len}'
#创建了一个异常类提示
if __name__ == '__main__':
try:
con=input('请输入密码')
if len(con)<3:
raise ShortInputError(len(con),3)
#抛出异常类
except Exception as result:
print(result)
else:
print('密码已经输入完成')