1.什么是异常:
程序发生错误的信号,程序一旦出错就会抛出异常,程序的运行随即终止
2.异常的三大特征:
Traceback (most recent call last): (异常的追踪信息)
File "D:/python/test.py", line 1, in <module> (异常的内容)
NameError: name 'a' is not defined (异常的类型)
3.为何要处理异常:
为了增强程序的健壮性,即便是程序运行过程中出错了,也不要终止程序,而上捕捉异常并处理:将错误信息记录到日志内
4.如何处理异常
异常分为两大类:
4.1语法上的错误SyntaxError:
if 1>3
print('run....')
少:号
4.2 逻辑上的错误AttributeError:1/0
针对逻辑上的异常又分为两种处理方式:
4.2.1:错误发生的条件是可以预知的,使用if判断来解决
1 age = input('>>>:').strip() 2 if age.isdigit(): 3 age = int(age) 4 if age > 18: 5 print('猜大了') 6 elif age < 18: 7 print('猜小了') 8 else: 9 print('猜对了') 10 else: 11 print('必须输入数字')
4.2.2:错误发生的条件是无法预知的
5.所有异常类型案例
(索引错误)
1 print('star...') 2 try: 3 print('11111111') 4 l = ['aaa', 'bbb'] 5 l[3] # 抛出异常IndexError,该行代码同级别后的后续代码不会运行 6 print('22222222') 7 xxx 8 print('33333333') 9 dic = {'a': 1} 10 dic['a'] 11 except IndexError as e: # (索引错误) 12 print('异常信息:', e) # list index out of range 13 14 print('end...')
(两个错误:索引、名字)
1 print('star...') 2 try: 3 print('11111111') 4 l = ['aaa', 'bbb'] 5 l[3] # 抛出异常IndexError,该行代码同级别后的后续代码不会运行 6 print('22222222') 7 xxx 8 print('33333333') 9 dic = {'a': 1} 10 dic['a'] 11 except IndexError as e: # (索引错误) 12 print('异常信息:e', e) # list index out of range 13 except NameError as b: # (名字错误) 14 print('异常信息:b', b) # name 'xxx' is not defined 15 print('end...')
==================================
虽然错里两个,但是只提示一个错误信息
(捕获所有类型错误)
(try和else)
(try和finally可以单独一起使用)