异常的概念
代码执行产生错误,无法继续
异常的产生
异常处理的目标:代码出现问题,不能让代码停止,继续运行,我们可以来处理这个异常
方案1:
if判断:未卜先知----要写if,后面跟着的条件是已知的------事前处理
缺点:如果出现没有预料到底异常,或报错
方案2:人体免疫系统----异常机制
事后处理:出现问题,我们来处理---解决问题
异常捕获与处理
方法一:类似if,可以预知异常
while True:
num = input('请输入一个整数:
').strip()
try: #捕获下面语句的异常
print('100/{} = {}'.format(num,100/int(num)))
except ZeroDivisionError: #一种已知的异常,其他异常无法捕获
print('除数不能为0,请重新输入!')
except ValueError
as error: #Error异常是一个类函数
print('除数为数字,请重新输入!',error)
方法二:
while True:
num = input('请输入一个整数:
').strip()
try: #捕获下面语句的异常
print('100/{} = {}'.format(num,100/int(num)))
except Exception: #未知的异常,异常的父类
print('异常了,我来处理')
方法三:可以输出异常
while True:
num = input('请输入一个整数:
').strip()
try: #捕获下面语句的异常
print('100/{} = {}'.format(num,100/int(num)))
except Exception
as ex: #未知的异常,异常的父类
print('异常了,我来处理',ex)
方法四:较为通用
while True:
num = input('请输入一个整数:
').strip()
try: #捕获下面语句的异常
print('100/{} = {}'.format(num,100/int(num)))
except:
print('异常了,我来处理')
方法五:同时有已知异常和未知异常的捕获
while True:
num = input('请输入一个整数:
').strip()
try: #捕获下面语句的异常
print('100/{} = {}'.format(num,100/int(num)))
except ZeroDivisionError: # 一种已知的异常,其他异常无法捕获
print('除数不能为0,请重新输入!')
except ValueError
as error: #
Error异常是一个类函数
print('除数为数字,请重新输入!', error)
except:
print('异常了,我来处理')
方法六:追溯详细的日志
import traceback
while True:
num = input('请输入一个整数:
').strip()
try: #捕获下面语句的异常
print('100/{} = {}'.format(num,100/int(num)))
except:
print('异常了,我来处理',traceback.format_exc())
#详细的报错信息,可以添加到日志中
例如:
import traceback
try:
fo = open('xx.txt')
except:
print('xx.txt文件不存在')