异常处理
- try.....except...结构
- try.....except...else....结构
- 带有多个except...的 try.....结构
- try.....except...else...finally...结构
try…except…结构
try:
# 可能引发异常的代码块
except Exception: #可能出现的异常
#如果try中的代码不能正常执行,就会执行此处代码
def div(x, y):
try:
z = x / y
return z
except ZeroDivisionError:
print('程序出现异常,异常类型为:除数为0')
print(div(5, 0)) #程序出现异常,异常类型为:除数为0
# None
try…except…else…结构
try:
# 可能引发异常的代码块
except Exception: #可能出现的异常
#针对上面的异常进行处理的代码块
else:
#如果没有引发异常,则在执行完try中的代码后会执行此处代码
def div(x, y):
try:
z = x / y
except ZeroDivisionError:
print('出现了以0为除数的异常')
y = float(input('请输入一个非0的值'))
z = x / y
return z
else:
return z
print(div(5, 0))
# ----------------->
# 出现了以0为除数的异常
# 请输入一个非0的值2
# 2.5
带有多个except…的 try…结构
try:
# 可能引发异常的代码块
except Exception1: #可能出现的一种异常
except块1 #针对上面的异常进行处理
except Exception2: #可能出现的一种异常
except块2 #针对上面的异常进行处理
else: #可有可无
def div(x, y):
try:
z = x / y
except ZeroDivisionError:
print('出现了以0为除数的异常')
except TypeError:
print('被除数和除数应为数值类型')
else:
return z
print(div(5, 'b'))
# -------------------->
# 被除数和除数应为数值类型
# None
try…except…else…finally…结构
try:
# 可能引发异常的代码块
except ZeroDivisionError: # 这里也可以是多个 except
# 用来处理异常的代码块
finally:
# 无论异常是否发生,都会执行该代码块
def div(x, y):
try:
print(x / y)
except ZeroDivisionError:
print('除0错误!')
except TypeError:
print('类型错误!')
except NameError:
print('名字错误!')
else:
print('正确!')
finally:
print('执行finally语句块!')
div(1, 0)
# ----------->
# 除0错误!
# 执行finally语句块!