目录
1.什么是异常?
代码运行出错之后就是异常 异常会导致程序立刻停止
是我们以后在编程过程中需要极力避免的情况(异常的外号>>>:bug)
2.异常信息的组成部分
name
Traceback (most recent call last):
File "C:/me/JetBrains/pythonProject/异常处理/异常处理.py", line 188, in <module>
name
NameError: name 'name' is not defined
1.line关键字所在的一行
用于提示你代码哪一行出错了 点击前面的蓝色字体可以直接定位
'''如果报错的信息很长 一般最后一个才是'''
2.NameError错误的类型
代码的报错也可以分为很多类型
3.name 'name' is not defined
具体的报错原因(就是解决报错的答案)
3.异常的分类
1.语法异常
不被允许的 如果出现了必须立刻改正
eg:if分支结构都不会写...
if 1, while :,...
2.逻辑异常
可以允许的 如果出现了尽快修改即可
eg:代码动态获取到了一个字符串类型的数据但是调用了列表的内置方法
name = 'yietong'
print(name.append())
改bug其实就是在重新梳理你的思路
4.异常的类型(有很多 不一一列举)
# print(name) # NameError 名字错误
# l1 = [11, 22, 33]
# print(l1[100]) # IndexError 索引错误
# d = {'name':'jason'}
# print(d['age']) # KeyError 键错误
# int('jason') # ValueError 值错误
异常处理实操
'''有时候针对可能会出错的代码 也可以自己提前写好处理措施'''
正常情况下代码出错 肯定是直接导致程序停止
但是也可以自己通过代码来处理 从而避免程序的停止
基本语法结构
try:
可能会出错的代码
except 错误的类型1 as e: # e指代的就是错误的提示信息
针对性的处理措施
except 错误的类型2 as e: # e指代的就是错误的提示信息
针对性的处理措施
except 错误的类型3 as e: # e指代的就是错误的提示信息
针对性的处理措施
...
# 错误类型
很多时候可能自己都不知道会报什么类型的错误
'''万能异常:常见的报错都可以照单全收'''
try:
可能会出错的代码
except Exception as e:
统一的处理措施
##############################################
异常处理使用尊则
1.被检测的代码越少越好
2.能尽量少用就尽量少用
##############################################
异常处理了解操作
1.结合else使用
当try检测的代码没有发生异常 正常运行完毕之后执行else的子代码
try:
可能会出错的代码
except Exception as e:
统一的处理措施
else:
可能会出错的代码没有出错 最后走else子代码
2.结合finally使用
无论try检测的代码是否有异常 最后都会执行finally子代码
try:
name
except Exception as e:
print(e)
finally:
无论try检测的代码是否有异常 最后都会执行finally子代码
3.全部整合到一起使用
try:
name
except Exception as e:
print(e)
else:
print('没报错 好极了')
finally:
print('管你错不错 都执行')
4.断言(了解中的了解)
name = 'yietong'
assert isinstance(name,str)
5.主动报错(需要掌握)
raise NameError('不爽 就要作!!!')
'''由于是主动报错 所以可以非常明确的知道错误的类型'''