Python-异常处理
今日内容 - 异常处理
处理异常:
排错的时候,真正报错的是最下面
python的代码是不会出错的,应该从下向上找最后一行自己写的代码去处理
异常处理的应用:
1、可以用if规避,但是成本太高。
2、不能用if处理了 StopIteration
异常处理的特点:一旦发生异常,程序就不再执行。
try: num = input('num : ') int(num) #ValueError print(num) except ValueError: print('请输入一个数字')
放在try中的代码如果遇到except中的错误类型,就会执行except中的代码
且一旦发生异常,try中的代码会停止在异常处,但不影响try语句之外的代码执行
一种错误类型只能处理对应的一种错误,其他错误还会照常报错
try: num = input('num : ') int(num) # ValueError print(num) a sum(1, 2, 3) except ValueError: print('请输入一个数字') except NameError as nameerror: print('产生了一个%s'%nameerror) except TypeError: print('又一个错误诞生了')
as:
在我们不能完全明确的知道这个错误到底是发生了什么的时候,就用as 变量名,
将变量中存储的错误信息打印出来。
万能异常:
try: num = input('num : ') int(num) # ValueError # b #NameError # sum(1,2,3) #TypeError # dic = {} # dic['key'] #KeyError l = [] l[1000] #IndexError l = [1,23] l_iterator = iter(l) next(l_iterator) next(l_iterator) next(l_iterator) #StopIteration except ValueError: print('请输入一个数字') except Exception as e: print(e)
对于你已经可以预见的但是不能完全规避的必须要处理的异常,你应该去指定它的处理方式
对于其他你不能预料的,再使用万能异常处理
异常处理中的else语句
try: a =1 except NameError as e: print(e) else: print('当try语句中不会发生异常的时候执行else中的代码啦')
finally:
def func(): try: f = open('file') int(f.read()) except ValueError as e: a = 123 return a finally: #清理的工作 把之前的打开的链接 文件 都关掉 #避免因为程序异常造成的浪费资源和逻辑问题 # finally中的代码永远执行 f.close() print(func())



浙公网安备 33010602011771号