在我们开发程序过程中,总会遇到各种错误。有的错误是由于程序编写有问题造成的,比如本应该输出整数结果输出了字符串,这种错误我们称之为bug,bug是必须修复的。有的是用户输入错误造成的,比如让用户输入email地址,结果得到空字符串,这种错误可以通过检查用户输入来做相应处理。还有一类错误是完全无法在程序运行过程中预测的,比如磁盘满了,网络突然连接失败......这类错误称为异常。Python内置了一套异常处理机制,来帮助我们进行错误处理。
此外,我们需要跟踪程序执行,查看变量是否正确,这个过程称为调试。最后,编写测试也很重要,有了良好的测试,就可以在程序修改后反复运行,确保程序符合我们编写的测试。
1.错误处理
Python内置了一套 try...except...finally... 的错误处理机制,接下来通过例子了解一下~~~
try:
#主代码块
pass
except IndexError as e:
#异常时,执行该块--索引错误
print(e)
except KeyError as e:
#异常时,执行该块--键错误
print(e)
except ValueError as e:
#异常时,执行该块--值错误
print(e)
except Exception as e:
#万能异常:Exception,他可以捕获任意异常!既然有这个万能异常,其他异常是不是就可以忽略?当然不是,对于特殊处理或提醒的异常需要先定义,最后定义Exception来确保程序正常运行。
print(e)
else:
#主代码块执行完,执行该块
pass
finally:
#无论异常与否,最终都会执行该块
pass
#try...except...finally
try:
print('try...')
r = 10 / 0
print('result:',r)#错误发生,后续语句不再执行
except ZeroDivisionError as e: #有错误,捕获错误;没有错误,不执行
print('except:',e)
finally:#无论是否发生错误都会执行
print('finally...')
print('END')
#注:try来运行可能会出错的代码,如果执行出错,则后面的代码不会继续执行,而是直接跳到错误处理代码,即except语句块;执行完except后,如果有finally语句块,则执行finally语句块;至此,执行完毕!
结果:上述代码计算10/0时产生一个除法运算错误
try...
except: division by zero
finally...
END
如果有多种不同类型错误怎么做?没错,可以用多个except来捕获不同类型的错误:
#try...except...except...else...finally
try:
print('try...')
r = 10 / int('a')
print('result:',r)
except ValueError as e: #捕获ValueError