异常
1.什么是异常
【异常在python中是一个对象】
异常简单理解,就是非正常,没有达到预期目标。
异常是一个事件,并且这个异常事件在我们程序员的运行过程中出现,会影响我们程序正常执行。
异常分两种:
-
语法错误导致的异常
-
逻辑错误导致的异常
#在程序无法正常运行处理时,就会出现一个异常,在python中异常是一个对象,表示一个错误。
#例如:获取一个不存在的索引
a = [1,2,3]
print(a[5])
>>>Traceback (most recent call last):
File "D:/学习笔记/新职课/第五章-模块,包与库训练/第六节/test.py", line 2, in <module>
print(a[5])
IndexError: list index out of range
#IndexError:异常类
#list index out of range 异常信息
#不同的异常有不同的类
2.如何处理异常
-
如果错误发生的情况是可以预知的,那么就可以使用流程控制进行预防处理
a,b = 2, '3' res = a + b print(res) #此时会报异常,类为TypeError #此时错误的发生条件是可以预知的,因为如果要做+运算,要保证a和b可以相加 a,b = 2, '3' if isinstance(b,int): print(a+b) #通过流程控制进行预防处理
-
如果错误的发生条件不可预知,就可以使用 try: … except: … 在错误发生时进行处理
语法: try: 可能发生异常错误的代码 except: 如果发生异常则进入 except 代码块进行处理
''' 假设读取的文件不存在,会发生错误,可以使用两种方式进行处理, 1. 可以在文件读取前先判断当前的文件是否存在 2. 也可以使用try: ... except: ... 在错误发生时进行处理 注意:try: ... excep: ... 是在错误发生后进行的处理。和if有着根本性的区别。 if是避免了错误的发生, try: ... excep: ...是错误确实发生了,但是程序还可以继续运行 '''
3.try: … except: … 详细用法
-
使用try: … except: … 处理指定的异常。如果引发了非指定的异常,则无法处理
try: s1 = 'hello' int(s1) # 会引发 ValueError except ValueError as e: # except IndexError as e: #如果引发了非指定的异常,则无法处理 print(e) >>>invalid literal for int() with base 10: 'hello'
-
多分支处理异常类:不同的异常会走向不同的except处理