python入坑进阶第四步:python调试

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)

结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8VF5RB4H-1643286916535)(C:\Users\17216\AppData\Roaming\Typora\typora-user-images\image-20220124220246587.png)]

(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
>>> 

文件结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fsLCDCBX-1643286916537)(C:\Users\17216\AppData\Roaming\Typora\typora-user-images\image-20220124220945734.png)]

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)

运行截图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIrCOzeV-1643286916539)(C:\Users\17216\AppData\Roaming\Typora\typora-user-images\image-20220126211612261.png)]

4、日志 logging

使用日志的好处:

可以理解程序中发生的事,以及事情发生的顺序。

日志消息可以描述程序何时到达日志函数的调用,并列出所指定变量当时的值。

另一方面:缺失日志信息表明有一部分代码被跳过,从未执行。

1)日志的级别
级别日志函数描述
DEBUGlogging.debug()最低级别。用于小细节。通常只有在诊断问题时,你才会关心这些消息。
INFOlogging.info()用于记录程序中一般事件的信息,或确认一切工作正常
WARNINGlogging.warning()用于表示可能的问题,它不会阻止册程序工作,但将来可能会。
ERRORlogging.error()用于记录错误,它导致程序做某事失败
CRITICALlogging.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')
>>> 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大脑经常闹风暴@小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值