python示例异常处理与程序调试_笔记:Python异常处理与程序调试

Python异常处理与程序调试

Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性。异常处理还具有释放对象,中止循环的运行等作用。在程序运行的过程中,如果发生了错误,可以返回事先约定的一个错误代码。

"try...except"语句

用于处理问题语句,捕获可能存在的异常。try子句的代码块中放置的可能出现异常的语句,except子句中的代码用于处理异常。当异常出现时,Python会自动生成一个异常对象。

>>> try:

... f = open('test.txt', 'r')

... print("该文件是正常的")

# 捕获IO异常

... except IOError:

... print("该文件不存在")

# 其他异常情况

... except:

... print('程序异常')

... else:

...print('文件打开成功')

f.close()

该文件不存在

>>>

try...except后边还可以添加一个finally语句,无论异常是否发生,finally子句都会被执行。所有finally子句均用于关闭因异常而不能释放的系统资源。

try:

f = open('test.txt', 'r')

try:

print(f.read())

except:

print('该文件是正常的')

finally:

print('释放资源')

f.close()

except IOError:

print('文件不存在')

with...as

with...as(上下文管器)可以很简洁的实现以上功能

with open('test.txt', 'r') as f:

f.write('hrllo ')

f.write('world ')

with...as可以处理出现异常的情况,并且避免了在open()一个文件后忘记写close()方法的情况

raise

当程序出现错误时,Python会自动引发异常,也可以通过raise语句显示引发的异常,一旦执行了raise语句,raise语句后的代码将不能被执行

try:

s = None

if s is None:

print('s是空对象')

raise NameError

print(len(s))

except TypeError:

print('空对象是没有长度的')

s是空对象

Traceback (most recent call last):

File "异常处理.py", line 21, in

raise NameError

NameError

Python程序调试

一般用到的程序调试方法

print方法

断言(assert)方法

logging模块

pdb

编辑器自带的调试功能

断言(assert)方法,用于检测某个表达式是否为真

>>> assert 1 == 0, '1 不等于 0'# '1 不等于 0' 是为断言语句加的异常参数

Traceback (most recent call last):

File "", line 1, in

AssertionError: 1 不等于 0

>>>

logging模块

如果Python程序代码量到了一定数量,使用logging模块是一个很好的选择,logging不仅可以输出到控制台,还可以写入文件,还可以使用TCP将日志发送到网络。

import logging

logging.debug('debug message')

logging.info('info message')

logging.warning('warning message')

logging.error('error message')

logging.critical('critical message')

# 输出结果:

WARNING:root:warning message

ERROR:root:error message

CRITICAL:root:critical message

默认情况下,logging模块将日志打印到屏幕(stdout),日志级别为WARNING(只有日志级别高于WARNING的日志才会输出)

pdb

Python的调试器,可以让程序单步执行,随时查看程序运行状态

执行python3 -m pdb test.py

"l"表示查看代码完整内容,"n"表示一步一步执行代码,"p+变量名"可以随时打印出程序的变量名,"q"退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值