python中提供了很多不同形式的异常处理结构,其基本思路都是先尝试执行代码,再处理可能发生的错误。
try…except…
在python异常处理结构中,try…except…使用最为频繁,其中try子句中的代码块为可能引发异常的语句,except子句用来捕获相应的异常。
例如,在使用学校的学生成绩系统录入每科成绩时,要求输入0~100的整数,而不接受其他类型的数值,如果输入的值超过0~100这一范围,则会给出提示。
#! /usr/bin/python
#coding:utf-8
mathScore = input('数学成绩')
try:mathScore = int(mathScore)if (0<=mathScore<=100):print("输入的数学成绩为:",mathScore)else:print('输入的数值有误')
except Exception as e:print('输入的数值有误')
运行结果为
try…except…else…
如果try代码的子句出现了异常且该异常被except捕获,则可以执行相应的异常处理代码,此时就不会执行else的子句;如果try中的代码没有抛出异常,则继续执行else子句
#! /usr/bin/python
#coding:utf-8
mathScore = input('数学成绩:')
try:mathScore = int(mathScore)
except Exception as e:print('输入的数值有误')
else:if (0<=mathScore<=100):print("输入的数学成绩为:",mathScore)else:print('输入的数值有误')
运行结果:
try … except…finally…
无论try子句是否正常执行,finally子句中的代码块总会得到执行。在日常开发过程中,该结构通常用来做清理工作,释放子句中申请的资源。
例如,输入两个数值a,b进行除法运算,并输出最终结果。
#! /usr/bin/python
#coding:utf-8
a = int(input('a:'))
b = int(input('b:'))
try:div = a / bprint(div)except Exception as e:print('The second parameter cannot be 0.')
finally:print('运行结束!')