一、常见类型
(一)粗心导致语法错误
例如:
- 漏了末尾冒号;
- 缩进错误;
- 英文符号错用为中文符号;
- 字符串拼接时,把字符串、数字类型拼接到一起;
- 没有定义变量;
- == 错用成 =。
(二)知识点不熟练
浅浅的举两个例子吧,毕竟python的语法有那么多:
- 索引越界;
- append()不按照规定使用。
(三)思路不清晰
有很多看似很牛的项目,只用一个文件,几百行代码就能搞定,堪称高效。但如果你在里面好好的逛了一圈之后就一定会惊呼:“注释都救不了他了!”
(四)被动掉坑
代码逻辑没有错误,只因用户操作不当或意外情况导致程序崩溃。
解决方案:异常处置机制(出现异常及时捕获,内部消化,确保程序运行)
1、基础形式
try: ...... ...... ...... # 可能出现异常的代码 except xxx: # 填入可能会报错问题。若无法预知,可以直接使用 excpet: ...... ...... ...... # 报错后执行的代码
2、拓展模式
try-except-else
若try块中没有抛出异常,则执行else块;若抛出异常,则执行except。
举个整数相除的例子:
try: a = int(input('请输入一个整数:')) b = int(input('请输入一个整数:')) c = a / b except BaseException as e: print('有错误', e) else: print(c)
try-except-else-finally
若try块中没有抛出异常,则执行else块;若抛出异常,则执行except;无论是否有异常,finally都会执行。
用finally优化一下刚才的程序:
try: a = int(input('请输入一个整数:')) b = int(input('请输入一个整数:')) c = a / b except BaseException as m: print('有错误', m) else: print(c) finally: print('程序执行完毕!')
二、常见异常类型
三、Traceback模块的使用
对比起前两个程序,使用Traceback模块明显要
import traceback try: print('----------------------------') print(10/0) # 运行后会报错的 except: traceback.print_exc()