错误处理及调试

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)
posted @ 2015-09-12 23:20  mlhy  阅读(150)  评论(0编辑  收藏  举报