1、抛出异常__使用raise语句
格式:
raise Exception(‘自定义的出错信息’)
实例:
def print5(number):
if number != 5:
raise Exception('请输入数字5!')
try:
print5(6)
except Exception as err:
print('报错信息为:'+str(err))
结果如下:
2、通过反向跟踪
(1)反向跟踪的含义:
python遇到错误,就会生成一些错误信息,称为“反向跟踪”。
“反向跟踪”包含了出错信息,导致错误的代码行号,以及导致该错误的函数调用的序列(调用栈)。
(2)实例
def print5(number):
if number != 5:
raise Exception('请输入数字5!')
print5(6)
结果如下:
(3)将反向跟踪信息报错至文本文件___traceback模块
>>> import traceback
>>> try:
raise Exception('报错信息')
except:
file=open('D:\\python\\error.txt','w')
file.write(traceback.format_exc())
file.close()
print('错误信息已写入文件路径:D:\python\error.txt')
__________________________运行结果____________________________
93 #93表示写入文件字符的个数
错误信息已写入文件路径:D:\python\error.txt
>>>
文件结果:
3、断言 :assert
含义:
assert(断言)用于判断一个表达式,在表达式条件为false的时候触发异常。断言可以在不满足程序运行的情况下直接返回错误,而不必等待程序运行出现崩溃的情况。
使用断言举例:
>>> assert 1==3 ,'这里正确的格式应该是1==1'
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
assert 1==3 ,'这里正确的格式应该是1==1'
AssertionError: 这里正确的格式应该是1==1
>>>
禁用断言:
禁用python 程序中的assert语句可以稍微提高性能;
从终端窗口运行Python时,在.py文件之前加上“-O” 即可跳过断言检查
举例如下:
assert.py代码:
a =10
b=11
assert a==b ,'a和b都应该是10'
print(a)
print(b)
运行截图:
4、日志 logging
使用日志的好处:
可以理解程序中发生的事,以及事情发生的顺序。
日志消息可以描述程序何时到达日志函数的调用,并列出所指定变量当时的值。
另一方面:缺失日志信息表明有一部分代码被跳过,从未执行。
1)日志的级别
级别 | 日志函数 | 描述 |
DEBUG | logging.debug() | 最低级别。用于小细节。通常只有在诊断问题时,你才会关心这些消息。 |
INFO | logging.info() | 用于记录程序中一般事件的信息,或确认一切工作正常 |
WARNING | logging.warning() | 用于表示可能的问题,它不会阻止册程序工作,但将来可能会。 |
ERROR | logging.error() | 用于记录错误,它导致程序做某事失败 |
CRITICAL | logging.critical() | 最高级别,用于表示致命错误,它导致或将要导致程序完全停止工作。 |
设置日志级别使用:logging.getLogger().setLevel(参数);
如果参数为:logging.DEBUG,则可以显示所有的日志级别消息(DEBUG是最低级别)python3 默认级别为logging.WARNING,设置日志级别之后,低于此日志级别的日志消息不显示。
举例如下:
>>> import logging
>>> logging.debug('debug')
>>> logging.info('info')
>>> logging.warning('warning')
WARNING:root:warning
>>> logging.error('error')
ERROR:root:error
>>> logging.critical('critical')
CRITICAL:root:critical
>>> #设置日志级别
>>> logging.getLogger().setLevel(logging.DEBUG)
>>> logging.debug('debug')
DEBUG:root:debug
>>>
2)禁用日志 :loggin.disable(参数)
>>> import logging
>>> #设置日志级别
>>>logging.getLogger().setLevel(logging.DEBUG)
>>> logging.debug('debug')
DEBUG:root:debug
>>> #禁用DEBUG及其以下低级别的日志消息
>>> logging.disable(logging.DEBUG)
>>> logging.debug('1234')
>>> logging.info('123')
INFO:root:123
>>> #禁用ERROR及其以下低级别的日志消息
>>> logging.disable(logging.ERROR)
>>> logging.debug('debug')
>>> logging.info('info')
>>> logging.warning('warning')
>>> logging.error('error')
>>> logging.critical('critical')
CRITICAL:root:critical
>>> #禁用所有日志消息
>>> logging.disable(logging.CRITICAL)
>>> logging.debug('debug')
>>> logging.info('info')
>>> logging.warning('warning')
>>> logging.error('error')
>>> logging.critical('critical')
>>>
3)将日志记录到文件 :logging.basicConfig(参数,[参数],[参数])
①:默认日志级别
>>> import logging
>>> logging.basicConfig(filename='D:\\python\\mylog.txt')
>>> logging.debug('debug')
>>> logging.info('info')
>>> logging.warning('warning')
>>> logging.error('error')
>>> logging.critical('critical')
②:设置记录到文件的目录级别
>>> import logging
>>> logging.basicConfig(filename='D:\\python\\mylog1.txt',level=logging.DEBUG)
>>> logging.debug('debug')
>>> logging.info('info')
>>> logging.warning('warning')
>>> logging.error('error')
>>> logging.critical('critical')
>>>