Python所有的错误都是从BaseException
类派生的,常见的错误类型和继承关系看这里:
https://docs.python.org/3/library/exceptions.html#exception-hierarchy
错误处理
首先看代码:
class Err(object):
def show(self,i):
try:
r = 10 / int(i)
print(r)
except ZeroDivisionError as e:
print('except:', e)
else:
print('no error!')
finally:
print('finally')
print('END!')
Python使用 try...except...finally...
来处理错误。
可以使用raise
抛出错误。
调试
方法一:print()
打印。
方法二:assert
断言,如果断言失败,assert语句本身就会抛出 AssertionError,在运行.py文件的时候可以使用 python3 -o xxx.py
关闭断言。关闭后,你可以把所有的 assert 语句当成 pass 来看。
assert n != 0, 'n is zero!'
方法三:logging
import logging
logging.basicConfig(level=logging.INFO)
logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error
等几个级别,当我们指定level=INFO时,logging.debug就不起作用了
。同理,指定level=WARNING
后,debug和info
就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
方法四:pdb
启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行状态。
以 -m pdb
的方式运行py文件:
$ python3 -m pdb err.py
输入 l
查看代码,输入 n
单步执行代码,输入命令p 变量名
来查看变量,输入命令q
结束调试,退出程序。
方法五:pdb.set_trace()
这个方法也是用pdb,但是不需要单步执行,我们只需要import pdb
,然后,在可能出错的地方放一个pdb.set_trace()
,就可以设置一个断点。
方法六:使用IDE【 PyCharm 】
这个是最好用的方法。