1 异常简介
捕获异常try...except...
例1
try:
print(a)
i = 1/0 # 如果前面出现异常,拋出错误,本行没有执行
except (NameError, ZeroDivisionError) as e:#捕获多个异常
print("出现异常:%s"%e)
输出:
出现异常:name 'a' is not defined
例2
f=None
try: #从本行开始捕获异常
f = open("text.txt")
try:
content = f.read()
content.index("hadoop")
except Exception as ex: # 捕获所有异常
print(ex)
except FileNotFoundError as ex: # 捕获文件不存在的异常
print(ex)
else:#没有异常的情况会自动执行的代码
print("没有异常的情况会自动执行的代码")
finally: # 最终要执行的代码,不管前面是否出现 异常
print("关闭文件")
if f:
f.close()
例3,异常的传递
f=None
try: #从本行开始捕获异常
f = open("text.txt")
try:
content = f.read()
content.index("hello")
i = 1/0
except ValueError as ex: # 捕获ValueError异常,未捕获除0异常,传递给外层捕获
print(ex)
except (FileNotFoundError,ZeroDivisionError) as ex: # 捕获文件不存在和除0的异常,最外层没有捕获,则由python捕获
print(ex)
else:
print("没有异常的情况会自动执行的代码")
finally: # 最终要执行的代码,不管前面是否出现异常
print("关闭文件")
if f:
f.close()
自定义异常
class PassWordException(Exception): # 自定义异常的类
def __init__(self, password, min_length):
self.password = password
self.min_length = min_length
def __str__(self):
return "%s密码错误,密码最小长度为%s"%(self.password,self.min_length)
def reg(username,password):
if len(password)<6:
raise PassWordException(password,6) # 抛出自定义的异常
else:
print("用户名:%s,密码%s"%(username,password))
try:
reg("ZhangSan","123")
except FileNotFoundError as e: # 两个except会按照顺序先执行第一个,如果第一个满足异常类型,不会执行后面的except
print("第一个except,FileNotFoundError:%s" % e)
except PassWordException as e:
print("第二个except,PassWordException:%s" % e)
except Exception as e:
print("第三个except,Exception:%s" % e)
扫码关注5G通信官方公众号,免费领取以下5G精品资料
1、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书》
2、回复“TXSB”免费领取《通信设备安装工程施工工艺图解》
3、回复“YDSL”免费领取《中国移动算力并网白皮书》
4、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1》
5、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用》
6、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书》
7、回复“IM6G”免费领取《6G典型场景和关键能力白皮书》
8、回复“SPN2”免费领取《中国移动SPN2.0技术白皮书》