异常处理:
1、什么是异常:
异常是错误发生的信号,
程序一旦出错,如果程序中还没有相应的处理机制
那么该错误就回产生一个异常抛出来
程序的运行也随之终止
2、一个异常分为三部分:
1、异常的追踪信息;
2、异常的类型;
3、异常的值;
3、异常的分类
1、语法异常:
1 这类异常应该在程序执行前就改正 2 print('start....') 3 x=1 4 x+=1 5 if 6 print('stop....') 7 IndexError 8 l=['a','b'] 9 l[100] 10 11 KeyError 12 d={'a':1} 13 d['b'] 14 15 AttributeError: 16 class Foo: 17 pass 18 19 Foo.x 20 import os 21 os.aaa 22 23 24 ZeroDivisionError 25 1 / 0 26 27 28 FileNotFoundError 29 f=open('a.txt','r',encoding='utf-8') 30 31 ValueError: I/O operation on closed file. 32 f=open('a.txt','r',encoding='utf-8') 33 f.close() 34 f.readline() 35 36 ValueError: invalid literal for int() with base 10: 'aaaaa' 37 int('aaaaa') 38 39 40 TypeError 41 for i in 333: 42 pass 43 44 NameError 45 x 46 func()
2、逻辑上的异常:
1 单分支: 2 try: 3 print('start...') 4 x = 1 5 y 6 l = [] 7 l[3] 8 d = {'a':1} 9 d['b'] 10 print('end...') 11 12 except NameError: 13 print('变量名没有定义') 14
多分之 try: print('start...') x = 1 y l = [] l[3] d = {'a': 1} d['b'] print('end...') except NameError: print('变量名没有定义') except KeyError: print('字典的key不存在') except IndexError: print('索引超出列表的范围') print('other...')
1 多种异常采用同一段逻辑处理 2 try: 3 print('start...') 4 x = 1 5 y 6 l = [] 7 l[3] 8 d = {'a': 1} 9 d['b'] 10 print('end...') 11 12 except (NameError,KeyError,IndexError): 13 print('变量名或者字典的key或者列表的索引有问题!') 14 15 print('other...')
1 万能异常 2 try: 3 print('start...') 4 x = 1 5 y 6 l = [] 7 l[3] 8 d = {'a': 1} 9 d['b'] 10 print('end...') 11 except Exception as e: 12 print('万能异常',e)