14、异常机制
作者:互联网
1、 抓取异常的语句,至少有try和一个expect
示例:
try:
int1 = int(input('请输入一个数字:'))
print(1/int1)
except ZeroDivisionError: #捕捉ZeroDivisionError异常
print('0 不能作为分母')
except ValueError: #捕捉ValueError异常
print('你输入的不是数字')
except: #捕捉其他异常
print('程序出现异常')
else: #当try完整执行,没有异常时执行else
print('输入正确')
finally: #不论是否有异常,都会执行finally
print('管你有没有异常,运行结束')
2、常见的error
- NameError #未定义
- IndexError #下标越界
- IOError #输入输出异常
- FileNotFoundError #文件不存在的异常
3、手动抛出异常
try:
raise FileNotFoundError
except FileNotFoundError:
print('文件不存在')
4、断言
assert 1==int(input('请输入一个数字:'))
当结果为真时,断言不做事情,当结果为假时,断言生效
5、日志
需加载logging模块,日志级别依次:debug、info、warning、error、critical
示例:
import logging
import time
import traceback #异常信息显示模块
#level默认为warning,显示设置的level日志级别及以上级别的日志
logging.basicConfig(level='INFO',filename='D:/test02.txt',filemode='a+')
try:
int1 = int(input('请输入一个数字:'))
print(1/int1)
except ZeroDivisionError:
logging.debug(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc()+'debug信息')
logging.info(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc()+'info信息')
logging.warning(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc()+'warning信息')
logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc()+'error信息')
logging.critical(time.strftime('%y-%m-%d %H:%M:%S') + traceback.format_exc() + 'critical信息')
示例中,捕捉ZeroDivisionError异常,并且日志级别设置为info
当输入数字0后,文件中记录了info及以上级别的日志,如下图:
标签:-%,logging,14,traceback,time,print,机制,异常 来源: https://blog.csdn.net/weixin_45128456/article/details/112281171