try...except...finally...,不同类型的错误由不同的except语句块处理,如果没有错误发生,可以在except语句块后面加一个else,没有错误发生时,执行else语句,finally语句如果有,一定会被执行(可以没有finally语句)。
调用堆栈,如果错误没有被捕获,一直往上抛,最终由Python解释器捕获,打印错误信息后程序退出。
记录错误,logging.exception(e),程序打印完错误信息后会继续执行。
抛出错误,我们可以自定义错误的class,选择好继承关系。用raise语句抛出一个错误的实例。raise语句如果不带参数,会把当前错误原样抛出,让顶层调用者处理。
print(),打印有可能出问题的变量。
断言assert,如果断言失败,assert语句会抛出AssertionError。python -o file.py关闭断言。
logging,允许指定记录信息的级别,有debug、info、warning、error等几个级别。通过配置,一条语句可以输出到不同地方,如console和文件。
调试器pdb,python -m pdb file.py,命令l可以查看代码,命令n可以单步执行代码,任何时候可以出入命令p 变量名来查看变量,命令q结束调试。
pdb.set_trace(),在可能出错的地方放一个set_trace,可以设置一个断点,程序会在pdb.set_trace()暂停并进入调试环境,命令p查看变量,命令c继续运行。
支持调试功能的IDE,如PyCharm,Eclipse+pydev插件。
新闻热点
疑难解答