异常处理
1.什么是异常
IndexError [][1]
KeyError {}['key']
pickle.load() EOFError
FileNotFoundError open('aa')
ModuleNotFoundError import aaaaaaaaaaa
ValueError int('sdjkhf')
2.什么时候最容易出异常
当你要处理的内容不确定的时候
1.有用户参与
2.有外界数据接入 : 从文件中读 从网络上获取
# 当有多行报错的时候是为什么? # def func1(): # name # # def func2(): # func1() # # def main(): # func2() # # main() # 在嵌套调用的过程中,内部的代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分 # 怎么解决 # 从下往上找 首先找到你写的代码 出错的那一行 # 看看能不能看出问题 # 就把报错的最后一行 错误类型和详细提示贴到百度里,结合报错的那一行解决问题
单分支
try: name = int('a') except ValueError: print("值错误")
多分支
li = ['a', 1, 'w'] try: num = int(input('num >>>')) print(li[num-1]) except ValueError: print("值错误") except IndexError: print("索引超出li的范围")
多分支合并
li = ['a', 1, 'w'] try: num = int(input('num >>>')) print(li[num-1]) except (ValueError, IndexError): print("输入错误")
万能异常
li = ['a', 1, 'w'] try: num = int(input('num >>>')) print(li[num-1]) except Exception: print("输入错误")
as语法
li = ['a', 1, 'w'] try: num = int(input('num >>>')) print(li[num-1]) except Exception as e: print(e) print("输入错误")
else 语句
当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理
li = ['a', 1, 'w'] try: num = int(input('num >>>')) print(li[num-1]) except Exception as e: print(e) print("输入错误") else: print("没有错误")
finally 语句
无论如何都会被执行
li = ['a', 1, 'w'] try: num = int(input('num >>>')) print(li[num-1]) except Exception as e: print(e) print("输入错误") finally: print("无论如何都会执行")
主动抛异常
主动抛出异常 : 是给其他开发者用的
raise ValueError
raise ValueError('你写的不对')
django是别人写的程序 框架 --> 程序员用
断言 - 语法
assert 1==2 # 只能接受一个布尔值 False
assert 1==1 # 只能接受一个布尔值 False
print(123456)
if 1 == int(input()):
pass
else:
raise AssertionError