'''这种语句类似于我们之前学习的多分支判断语句
try:
# 有可能出现异常的代码
except NameError as ze: # 这里可以加入形参,返回异常描述
# 出现上述异常时的解决方法,可以写多个except代码块,但是只会出现一个结果
except TypeError as ne:
# 出现上述异常时的解决方法,可以写多个except代码块,但是只会出现一个结果
except (NameError, TypeError): # 可以通过元祖合并处理异常
# 出现上述异常时的解决方法,可以写多个except代码块,但是只会出现一个结果
except Exception: # 可以直接写一个总的异常类来解决不确定的错误
# 出现上述异常时的解决方法,可以写多个except代码块,但是只会出现一个结果
else:
# 走另一个分支,一般是上面异常均未捕获的情况下才走else
finally:
# 无论如何都会执行的代码
'''
age = 18
try:
print(age)
except NameError:
print('变量名未定义')
else:
print('未捕获到任何异常')
finally:
print('+++++++++++')
# 异常的捕获是阻断的,一旦发现异常直接抛出第一个异常,后面代码出现异常不会被抛出
int1 = input('请输入一个数字:')
try:
# print(age) # 错误一
# 1 / 0 # 错误二
# lis = iter([1, 2, 3]) # 错误三
# print(next(lis))
# print(next(lis))
# print(next(lis))
# print(next(lis))
print(int1 + 10) # 错误四
except NameError:
print('变量名未定义')
except ZeroDivisionError as zde: # 定义异常名称
print('除零错误', zde) # 除零错误 division by zero
except (StopIteration, TypeError): # 同时抛出两个异常,但是并不是表示检测到两个异常,注释迭代器之后还会返回一样的结果
print('迭代错误,类型错误')
except Exception: # Exception是上面异常的父类
print('异常不确定')
else:
print('未捕获到任何异常')
finally:
print('+++++++++++')