“Python基础开发”课程_课堂笔记(HTML版_007)
Class notes of "Python basic development",this webPage is thirteenth Page.
本页面没有“代码demo索引”。
3.5 函数与异常
3.5.1教学目标
程序中的任何位置,都有可能发生异常,那么是不是有可能发生异常的地方都使用try异常处理语句进行异常扑捉呢?如果这样的话,程序太复杂——实际上异常有传递机制,就是一个地方发生的异常如果没有被捕捉、处理的话,它可以一层层传递,一直到被捕捉为止。
教学目标(我们在这小节的任务)就是掌握异常的这种传递机制,编写合理的处理程序。
3.5.2 异常处理
在Python中,如果一个函数抛出一个异常,那么在调用函数的地方可以捕捉到这个异常。
函数的异常捕捉
def fun():
print("start")
n=1/0#故意搞事
print(" end")
try:
fun()
except Exception as err:
print (err)#这两行代码,要背
执行该程序结果:
start
division by zero
函数的异常捕捉
由此可见fun函数中出现的异常在主程序调用fun时可以捕捉到,Python程序一个地方出现异常,那么异常会传递到上一级调用的地方,这个过程会一直传递下去, 直到异常被扑捉到为止,如果整个过程都没有遇到扑捉语句,程序就会因异常而结束。因此如果在fun中已经捕捉了异常,那么调用的主程序位置就捕捉不到了。
3.5.3案例
时间的输入与显示(不加入索引)
案例描述:输入一个有效的时间,并显示该时间。
案例分析:设置时间格式为h:m:s,输入时保证输入且h、m、s的值有效,不然就抛出异常。
def myTime():
h = int(input("时:"))
if h23:
raise Exception("无效的时刻数!")
m = int(input("分:"))
if m59:
raise Exception("无效的分钟数!")
s = int(input("秒:"))
if s59:
raise Exception("无效的秒数!")
print("%02d:%02d:%02d" % (h,m,s))
#在主程序中调用自定义函数
try:
myTime()
except Exception as err:
print(err)
print("mission passed!")
第7堂课,内容为函数与异常。
本页面(?p=7)的实际上课时间为2020年4月24日第3小节课。
这一“p”,之所以看起来这么短,是因为大多数时间,都花在了讲案例代码上面了。