Bug的由来与分类
1、粗心导致的语法错误:漏写冒号;缩进错误;中文符号;==
与=
的混用;字符串与数字混用
2、知识不熟练导致的错误
3、思路不清导致的错误:使用print()
打印输出;注释部分代码
4、被动掉坑:程序逻辑没有错,因为用户错误操作导致问题。解决方案:python提供了异常处理机制,可以在异常出现时捕获,然后内部消化,让程序继续运行。
try:
可能出现异常的代码
except 异常类型1:
异常处理代码
except 异常类型2:
异常处理代码
try...except...else
结构:
如果try块中未抛出异常,则执行else块;如果try抛出异常,则执行except块。
try:
可能出现异常的代码
except 异常类型 / BaseException as e:
print('出错了',e)
else:
执行代码
try...except...else...finally
结构:
如果try块中未抛出异常,则执行else块;如果try抛出异常,则执行except块。finally块中的内容无论是否发生异常都会被执行,常用来释放try块中申请的资源。
try:
可能出现异常的代码
except 异常类型 / BaseException as e:
print('出错了',e)
else:
执行代码
finally:
执行代码
python中常见的异常类型
ZeroDivisionError
:除零
IndexError
: 序列中没有此索引
KeyError
:映射中没有这个间
NameError
:未声明/初始化对象(没有属性)
SyntaxError
:python语法错误
ValueError
:传入无效的参数
python的异常处理机制
# traceback模块:使用traceback模块打印异常信息
import traceback
try:
print('1.-------------------')
num=10/0
except:
traceback.print_exc()
1.-------------------
Traceback (most recent call last):
File "<ipython-input-1-20a2333d566c>", line 6, in <module>
num=10/0
ZeroDivisionError: division by zero
pycharm开发环境的调试
设置断点;按工具栏上的小虫子按钮(Shift+F9);
在运行窗口按向下的箭头,看运行过程