错误处理及调试
try..except…finally
try:
code
except error as e:
code
else:
code #没有错误时执行
finally:
code #不管有没有错误都执行
code #正常
抛出错误
用raise关键字将错误抛出。
def foo(s):
n = int(s)
if n == 0:
raise ValueError('invalid value: %s'%s)
return 10/n
调试
print()
在可能的地方,用print()
断言
跟print()差不多
def foo(s):
n = int(s)
assert n != 0,'n is zero'
return 10/n
foo('0')
logging
将print()替换成logging,可以控制输出哪个级别的信息。
import logging
logging.basicConfig(level = logging.INFO)
s = '0'
n = int(s)
logging.info('n = %d'%n)
print(10/n)
level的级别有debug、info、warning、error
pdb
python -m pdb xxxx.py
l查看所有代码
n单步执行程序
p 变量名查看变量
q结束调试。
c继续运行
#err.py
import pdb
s = '0'
n = int(s)
pdb.set_trace() #设置断点
print(10/n)