9.异常和异常处理
9.1 异常的由来及分类
- 粗心导致的错误:
1.漏了末尾的冒号,如if语句,循环语句,else子句等⒉.缩进错误,该缩进的没缩进,不该缩进的瞎缩进
3.把英文符号写成中文符号,比如说:引号,冒号,括号4.字符串拼接的时候,把字符串和数字拼在一起
5.没有定义变量,比如说while的循环条件的变量6."==”比较运算符和”=”赋值运算符的混用 - 知识点掌握不熟练:多练
1.索引越界IndexError
2.append()方法掌握不熟练
9.2 异常类型的分类
9.3 异常处理机制
- try…except
try:
n1 = int(input('第一个整数:'))
n2 = int(input('第二个整数:'))
result = n1/n2
print('结果为',result)
except ZeroDivisionError:
print('除数不能为0')
- try…except…else结构:如果try块中没有抛出异常,则执行else模块,如果try中抛出异常,则执行except模块
try:
n1 = int(input('第一个整数:'))
n2 = int(input('第二个整数:'))
result = n1/n2
print('结果为',result)
except BaseException as e:
print('输入错误')
print(e)
else:
print('输出结果:',result)
- try…except…else…finally结构:finally块无论是否发生异常都会被执行,常用来释放try块中申请的资源
try:
n1 = int(input('第一个整数:'))
n2 = int(input('第二个整数:'))
result = n1/n2
print('结果为',result)
except BaseException as e:
print('输入错误')
print(e)
else:
print('输出结果:',result)
finally:
print('谢谢使用')
print('好耶')
'''
第一个整数:2
第二个整数:1
结果为 2.0
输出结果: 2.0
谢谢使用
好耶
'''
- traceback模块
import traceback
try:
print('***********')
print(1/0)
except:
traceback.print_exc()
'''
***********
Traceback (most recent call last):
File "D:/study/pythonProject/test1/test1.py", line 16, in <module>
print(1/0)
ZeroDivisionError: division by zero
'''
9.4 pycharm的调试模式
-
断点:程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步的判断。
-
进入调试视图
1.单击工具栏上的小虫子按钮
2.右键单击编辑区,点击degug模块名
3.快捷键:shift+F9