当前位置:
文档之家› 《Python语言程序设计基础》Python的控制结构-2.6 异常处理结构
《Python语言程序设计基础》Python的控制结构-2.6 异常处理结构
异常处理
2. 捕获多个异常 如果多个不同的异常使用相同的处理代码,还可合并为一个
except语句,后面跟异常名,语法格式为:
except (异常名称1, 异常名称2):
异常处理
3. 捕获所有异常 其基本语法格式为:
try: <语句块>
except: <异常处理代码>
1个Tab
表示try语句中的代码出现了任 何异常,都执行except语句,即 不指明异常类型的处理方式。
except ZeroDivisionError: print("除数不能为0")
except ValueError: print("除数和被除数只能为数字")
except Exception as result: print("捕获到的异常:%s"%result)
else: print("没有出现错误!")
except ZeroDivisionError: print("除数不能为0")
异常处理
2. 捕获多个异常 其基本语法格式为:
try: <语句块>
except 异常名称1: <异常1处理代码>
except 异常名称2: <异常2处理代码>
……
1个Tab
异常处理
举例:
#除数为零与非数字的异常处理 try:
在 Python中,所有的异常都是 Exception的子类,定义在exceptions模 块中,我们可以直接使用。 常见的异常类有以下几种。 • NameError • ZeroDivisionError • SyntaxError • IndexError • FileNotFoundError
抛出异常
4. 指定异常的描述信息
抛出异常
5. 异常引发异常
任务学习
【异常处理】
对两数除法运算的程序增加异常处理,如果出现异常则打印异常信息;如 果没有异常则打印“没有出现错误!”;程序结束时打印“try语句执行结束”。
拓展任务
【异常处理完善】
对上面的任务进行完善,利用循环方式重复输入过程,直到用户输入正确并 返回两数的商,如图所示。
异常处理
4. 没有捕获异常与终止行为
其基本语法格式为:
注意: (1)except必须在exceptA 后面; (2)else与finally都是可选项; (3)如果else存在,则必须存在except 或except A,且else在它们的后面; (4)finally必须在else的后面。
try: <语句块>
except A: <异常A处理代码>
except: <其他异常处理代码>
else: <没有异常处理代码>
finally: <最终必须处理的代码>
异常处理
举例:
#异常处理 try:
num1 = input("请输入除数:") num2 = input("请输入被除数:") print(int(num2)/int(num1))
num1 = input("请输入除数:") num2 = input("请输入被除数:") print(int(num2)/int(num1))
except ZeroDivisionError: print("除数不能为0")
except ValueError: print("除数和被除数只能所有异常
但是这种情况,所有异常采用相同的处理方式后,导致分不清产生了何 异常。 这时候可以采用输出捕获异常的消息来进行区分。
try: num1 = input("请输入除数:") num2 = input("请输入被除数:") print(int(num2)/int(num))
except Exception as result: print("捕获到的异常:%s"%result)
异常处理
4. 没有捕获异常与终止行为
异常处理机制中的else分支:它表示如果try语句没有捕获到任何错误信 息,就不会执行任何except语句,而是执行else语句。
异常处理机制中的finally分支:无论是否捕捉到异常,都要执行一些终 止行为,如文件关闭、释放锁等,这时可以使用finally语句进行处理。
异常处理
1. 捕获单个异常 其基本语法格式为:
try: <语句块>
except 异常名称: <异常处理代码>
1个Tab
异常处理
举例:
#除数为零的异常处理 try:
num1 = input("请输入除数:") num2 = input("请输入被除数:") print(int(num2)/int(num1))
《Python应用程序设计》 2.6 异常处理结构
目录
异常与异常类 异常处理 抛出异常
异常与异常类
程序在执行过程中产生的错误称为异常。 对于初学者来说,很多异常表 现为运行代码时,未成功得到结果,却显示红色的错误信息,如在输出变 量时没有定义变量,做数学运算的时候不能将0作为除数,如下图所示。
异常与异常类
finally: print("程序执行结束")
抛出异常
1. 使用类名引发异常
抛出异常
2. 使用异常类的实例引发异常
抛出异常
3. 异常传递
不带任何参数的raise语句,可以再次引发刚刚发生过的异常,作用是向 外传递异常。比如在try子句中使用raise隐式抛出异常后,在except子句中 使用不带参数的raise语句,就可以再次引发刚刚发生的异常。