2. try except finally语句。
在try except finally语句中,不管try子句里面有没有发生异常,finally子句都会执行。
说明:
如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。
a. 执行如下命令,修改test.py文件。
vim test.p
进入Vim编辑器后,按下i键进入编辑模式,修改为以下内容,修改完成后按下Esc键退出编辑模式,最后输入:wq后按下Enter键,保存并退出Vim编辑器。
# -*- coding: utf-8 -*- def divide(x, y): try: result = x / y print("result is", result) except ZeroDivisionError: print("division by zero!") finally: print("executing finally clause") divide(2, 1) # result is 2.0 # executing finally clause divide(2, 0) # division by zero! # executing finally clause divide("2", "1") # executing finally clause # TypeError: unsupported operand type(s) for /: 'str' and 'str'
b. 执行如下命令,运行test.py文件。
python3 test.p
返回结果如下图所示。
3. try except else语句。
如果在try子句执行时没有发生异常,Python将执行else语句后的语句。
说明:
else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。
#try: #检测范围 #except: #出现异常后的处理代码 #else: #如果没有异常执行这块代码
a. 执行如下命令,修改test.py文件。
vim test.p
进入Vim编辑器后,按下i键进入编辑模式,修改为以下内容,修改完成后按下Esc键退出编辑模式,最后输入:wq后按下Enter键,保存并退出Vim编辑器。
# -*- coding: utf-8 -*- try: fh = open("testfile.txt", "w") fh.write("这是一个测试文件,用于测试异常!!") except IOError: print("Error: 没有找到文件或读取文件失败") else: print("内容写入文件成功") fh.close()
b. 执行如下命令,运行test.py文件。
python3 test.p
返回结果如下图所示。
4