【注:pycharm中写代码运行时出现错误有可能是格式缩进问题:不论出现什么错误,先将所有代码选中(ctrl+A),然后用 ctrl + Alt +I (自动缩进)运行以下看是否仍有错误,如还有错误再去查错误】
异常处理
1.第一个异常——除零异常 【 分母为0 】
i = imput('请输入数字:')
n = 1000
result = n / int(i)
print(result)
print('{}除以{}等于{}'.format(n, i, result))
异常捕获
我们不能防止用户输入0,但在出现异常后我们能捕获并处理异常,不至于让程序发生终止并退出。
try - except语句
i = imput('请输入数字:')
n = 1000
try: # 可能会引发异常的语句
result = n / int(i)
print(result)
print('{}除以{}等于{}'.format(n, i, result))
except ZeroDivisionError as e: #异常类型
print('不能除以0,异常:{}'.format(e))# 处理异常
多个except代码块
如果多个except代码块的异常处理过程类似,则可以合并处理,这就是多重异常捕获。
try-except语句嵌套
【不是所有的异常都能嵌套,异常的嵌套需要有因果关系才用】
如果用户输入的是非数字类型字符串,一开始 int 转换的时候就会捕获到异常,只有当用户输入的是数字类型的字符串,才有除法的必要,到除法时才有判断是否分母为0的异常。所以两个异常是有因果关系的,数字型字符串才有判断分母为0的必要。
使用finally代码块释放资源
有时在try-except 语句中会占用一些资源,可以使用 finally 代码块
【 finally 后面的不管有没有异常都要执行】
自定义异常类
我们接触的异常都是由于解释器引发的,也可以通过 raise 语句手动引发异常。
【大公司自己创的库中自定义异常类】
通常情况使用手动引发异常的目的是由于我们自定义了一个异常,需要引发出来
【这个代码输入正常数字运行没问题,如果输入异常代码运行有错误】