x =10
y =0try:
z = x/y
except ZeroDivisionError:# 一般来说会预判到出现什么错误
z = x/(y+1e-7)# 可以把除数变为一个无限接近0的数print(z)print("0不可以被除!")
100000000.0
0不可以被除!
x =10
y =0try:
z = x/y
except NameError:# 预判错误,程序会被中断报错
z = x/(y+1e-7)print(z)print("0不可以被除!")
2.1.2 多分支
ls =[]
d ={"name":"大杰仔"}try:
y = m
# ls[3]# d["age"]except NameError:print("变量名不存在")except IndexError:print("索引超出界限")except KeyError:print("键不存在")
变量名不存在
2.1.3 万能异常 Exception——所有错误的老祖宗
ls =[]
d ={"name":"大杰仔"}try:# y = m
ls[3]# d["age"]except Exception:print("出错啦")
出错啦
2.1.4 捕获异常的值 as——虽不能获得错误具体类型,但可以获得错误的值
ls =[]
d ={"name":"大杰仔"}try:
y = m
# ls[3]# d["age"]except Exception as e:print(e)
name 'm' is not defined
2.2 try_except_else
如果try模块正确执行,则else模块执行
try:withopen("浪淘沙_北戴河.txt")as f:
text = f.read()except FileNotFoundError:print("找不到该文件,ta是不是用了美颜?")else:for s in["\n",",","。","?"]:# 去掉换行符和标点符号
text = text.replace(s,"")print("《浪淘沙_北戴河》共由{}个字组成。".format(len(text)))
《浪淘沙_北戴河》共由65个字组成。
2.3 try_except_finally
不论try模块是否正确执行,finally最后都执行
ls =[]
d ={"name":"大杰仔"}try:
y = m
# ls[3]# d["age"]except Exception as e:print(e)finally:print("不论触不触发异常,都将执行")