# 异常处理
"""
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法格式
try:
pass #代码块,逻辑
except Exception as e: #捕获异常类型,类型为Exception,异常信息用e接收
pass #捕获到类型为Exception的异常,自动执行当前块的内容
else:
pass #如果没有异常发生执行此段代码
finally:
pass #无论是否发生异常都执行此处代码
try的工作原理
1、当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
2、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
3、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
4、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
5、Exception可以捕获任何类型的异常,只要出现就会被捕获。
6、可以在一个try块中设置多个异常捕获,用于捕获各种不同的异常,并分类处理
"""
# 示例1、简单演示异常处理,else和finally可以不写
try:
i = input('请输入数字:')
i = int(i) # 如果用户输入的是字母,无法转换成int类型就会出现异常
except AttributeError as e: # 捕获用户中断
print('捕获用户退出异常')
except Exception as e: # 捕获异常信息,Exception可以捕获任何类型的异常,只要出现就会被捕获
print('可以捕获所有异常') # 打印异常信息
else:
print('输入的数字是:{}'.format(i))
finally:
print('执行完成')