Python try异常处理语句的用法(非常详细,附带实例)
在编写 Python 程序时,遇到的错误通常分为语法错误和运行错误。
所谓语法错误,例如输出字符串“Hello,ShenZhen!”的代码为:
所谓运行错误,假设 a 为 8,b 为 0,输出 a 除以 b 的结果。输入代码:
按照报错信息进行改正,将 0 换为 2 后,就不会报错了,运行结果为:
下面使用 try except else 语句。定义 a 为 2,输入代码:
下面进行异常处理,将 a 的值改为整数 0,程序的运行结果为:
无论是否捕获到异常,都会执行 finally 语句。finally 语句通常用于执行一些清理操作,如关闭文件、释放资源。即使在 try 块中抛出了异常,finally 语句也会被执行。
下面举一个例子:
try except finally 语句提供了一种结构化的方式来处理异常,并在异常处理后执行一些清理操作,使我们能更好地控制程序的流程,同时确保资源的正确释放。
下面再举一个例子。输入代码:
所谓语法错误,例如输出字符串“Hello,ShenZhen!”的代码为:
print Hello,ShenZhen!运行程序,结果为:
File"demo.py", line 1
print Hello,ShenZhen!
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(Hello,ShenZhen!)?
代码有语法错误,提示缺少小括号,这种错误属于语法错误。所谓运行错误,假设 a 为 8,b 为 0,输出 a 除以 b 的结果。输入代码:
a=8 b=0 print(a/b)运行程序,结果为:
Traceback (most recent call last):
File"demo.py", line 3, in
print(a/b)
ZeroDivisionError: division by zero
此时会产生运行错误,因为 0 不可以作为除数。按照报错信息进行改正,将 0 换为 2 后,就不会报错了,运行结果为:
4.0
Python try except语句
try except 语句是一种异常处理机制,用于捕获、处理可能引发异常的代码块,语法如下:
try:
# 可能引发异常的代码块
# 希望捕获异常的代码
except [异常类型1]:
# 处理异常的代码块 1
except [异常类型2]:
# 处理异常的代码块 2
...
except [异常类型N]:
# 处理异常的代码块 N
else:
# 如果没有引发任何异常,则执行此代码块
finally:
# 无论是否引发异常,都会执行此代码块
下面举例子进行说明。定义 a 为 12,b 为 2,输出 a 除以 b 的结果。输入代码:
try:
a = int(12)
b = int(2)
c = a / b
print("a/b 的结果是:", c)
except (ValueError, ArithmeticError):
print("不能被 0 整除,请更换一个整数")
except:
print("未知错误,请检查")
print("程序继续运行")
运行程序,结果为:
a/b 的结果是: 6.0
程序继续运行
不能被 0 整除,请更换一个整数 程序继续运行
Python try except else语句
在 try except else 语句中,如果 try 语句没有捕获到任何异常,则执行 else 语句中的代码;相反,如果 try 语句捕获到异常,则调用对应的 except 语句进行异常处理,此时不会执行 else 语句中的代码。下面使用 try except else 语句。定义 a 为 2,输入代码:
try:
a = 2
b = 10 / a
print(b)
except ValueError:
print('必须输入整数')
except ArithmeticError:
print('除数不能为 0, 请重新输入')
else:
print('没有出现异常')
print("执行完成")
运行程序,结果为:
5.0 没有出现异常 执行完成由此可见,a 为 2 时,先执行 print(b) 语句,再执行 else 语句中的代码。
下面进行异常处理,将 a 的值改为整数 0,程序的运行结果为:
除数不能为 0, 请重新输入 执行完成由此可见,a 为整数 0 时,代码异常,会先执行 print('除数不能为0,请重新输入') 语句,再执行 print("执行完成") 语句,不会执行 else 语句中的代码。
Python try except finally语句
try except finally 语句用于处理异常和执行清理操作,语法如下:
try:
# 代码块,可能会抛出异常
except ExceptionType1:
# 异常处理代码块,用于处理 ExceptionType1 类型的异常
except ExceptionType2:
# 异常处理代码块,用于处理 ExceptionType2 类型的异常
finally:
# 清理操作的代码块,无论是否捕获异常都会执行此部分
try 块中的代码是我们希望执行的代码块。如果在执行这些代码时抛出了异常,则会跳过后续 try 块中的代码,并查找匹配的 except 块以处理异常。如果找到了匹配的 except 块,则执行相应的处理代码。如果没有找到匹配的 except 块,或者在处理异常时又抛出了新的异常,则将向上传递异常。无论是否捕获到异常,都会执行 finally 语句。finally 语句通常用于执行一些清理操作,如关闭文件、释放资源。即使在 try 块中抛出了异常,finally 语句也会被执行。
下面举一个例子:
try:
# 尝试执行可能引发异常的代码
x = 1 / 0
except ZeroDivisionError:
# 处理 ZeroDivisionError 异常
print("除数不能为零")
finally:
# 执行清理操作的代码
print("清理操作")
运行结果为:
除数不能为零 清理操作在这个例子中,试图用 1 除以 0,这会引发 ZeroDivisionError 异常。except ZeroDivisionError 语句捕获到这个异常并打印一条消息。finally 语句会被执行,并打印出一条”清理操作”的消息。
try except finally 语句提供了一种结构化的方式来处理异常,并在异常处理后执行一些清理操作,使我们能更好地控制程序的流程,同时确保资源的正确释放。
下面再举一个例子。输入代码:
try:
a = int(2)
print(10 / a)
except:
print("执行 except 发生错误异常")
else:
print("执行 else 块中的代码")
finally:
print("执行 finally 块中的代码")
运行结果为:
5.0 执行 else 块中的代码 执行 finally 块中的代码
ICP备案:
公安联网备案: