共计 1073 个字符,预计需要花费 3 分钟才能阅读完成。
在编写程序时,错误和异常是不可避免的。如果没有处理机制,程序一旦出错就会终止运行。Python 提供了异常处理机制,让我们能够优雅地应对错误,保证程序的健壮性。
- 什么是异常
异常是在程序运行过程中出现的错误,比如:
- 文件未找到(
FileNotFoundError) - 除以零(
ZeroDivisionError) - 类型错误(
TypeError)
例如:
print(10 / 0) # 会触发 ZeroDivisionError
- 基本的异常处理结构
try:
x = int("abc")
except ValueError:
print(" 出现了类型转换错误 ")
在 try 块中编写可能出错的代码,如果出错会进入 except 块。
- 捕获多个异常
try:
num = 10 / 0
except ZeroDivisionError:
print(" 不能除以零 ")
except ValueError:
print(" 数值错误 ")
- 捕获所有异常
try:
f = open("nofile.txt")
except Exception as e:
print(" 出错了:", e)
- finally 子句
finally中的代码无论是否发生异常都会执行,常用于资源释放:
try:
f = open("example.txt", "r")
content = f.read()
except FileNotFoundError:
print(" 文件不存在 ")
finally:
print(" 无论如何都会执行 ")
- else 子句
当try块中没有异常时,执行else:
try:
num = int("123")
except ValueError:
print(" 转换失败 ")
else:
print(" 转换成功,结果:", num)
- 主动抛出异常
使用raise关键字可以主动引发异常:
def divide(a, b):
if b == 0:
raise ZeroDivisionError(" 除数不能为零 ")
return a / b
print(divide(10, 2))
# print(divide(10, 0)) # 会抛出异常
- 自定义异常类
class MyError(Exception):
pass
try:
raise MyError(" 这是一个自定义异常 ")
except MyError as e:
print(" 捕获到:", e)
总结:
Python 的异常处理机制通过 try-except-else-finally 提供了强大的错误控制能力,合理使用能让程序更加稳定。
练习与思考:
- 编写一个函数,输入两个数,返回它们的商,并处理除数为零的情况。
- 编写一个程序,尝试打开一个不存在的文件,并捕获异常。
- 自定义一个异常类,模拟当输入的年龄小于 0 时抛出错误。
正文完