【Python入门速学】3.5. 异常(Exceptions)
·
3.5.1. 什么是异常?
在程序执行过程中,如果发生错误,Python 会引发(raise)一个异常,并导致程序崩溃。
示例 1:ValueError 异常
num = int(input("请输入一个整数: ")) # 如果输入不是整数,会引发 ValueError
如果用户输入 abcd,Python 会报错:
ValueError: invalid literal for int() with base 10: 'abcd'
示例 2:ZeroDivisionError 异常
result = 10 / 0 # 试图除以零,会引发 ZeroDivisionError
会产生错误:
ZeroDivisionError: division by zero
3.5.2. 使用 try-except 处理异常
Python 允许我们使用 try-except 结构来捕获异常,并在异常发生时执行特定的代码,而不会让程序崩溃。
try:
num = int(input("请输入一个整数: "))
print("你输入的整数是:", num)
except ValueError:
print("错误: 请输入有效的整数!")
代码解析:
try代码块:尝试执行可能会引发异常的代码。except ValueError:如果发生ValueError异常,则执行except代码块。
3.5.3. 处理 ZeroDivisionError
try:
numerator = int(input("请输入分子: "))
denominator = int(input("请输入分母: "))
result = numerator / denominator
print("结果:", result)
except ZeroDivisionError:
print("错误: 不能除以零!")
3.5.4. 捕获多个异常
try:
num = int(input("请输入一个整数: "))
result = 10 / num
print("结果:", result)
except ValueError:
print("错误: 请输入有效的整数!")
except ZeroDivisionError:
print("错误: 不能除以零!")
代码解析:
except ValueError处理非整数输入。except ZeroDivisionError处理除零错误。
3.5.5. 使用 except 捕获所有异常
try:
num = int(input("请输入一个整数: "))
result = 10 / num
print("结果:", result)
except Exception as e:
print("发生错误:", e)
注意:
Exception是所有异常的基类,可以捕获所有类型的异常。as e允许我们获取具体的错误信息。
3.5.6. 使用 finally 语句
finally 语句无论是否发生异常,都会执行,常用于释放资源。
try:
file = open("example.txt", "r")
content = file.read()
print(content)
except FileNotFoundError:
print("错误: 文件未找到!")
finally:
file.close()
3.5.7. 综合示例:处理用户输入错误
# 获取用户的姓名和年龄
name = input("请输入你的姓名: ")
# 设定默认值
age = -1
try:
age = int(input("请输入你的年龄: "))
except ValueError:
print("错误: 年龄必须是一个数字!")
print("姓名:", name)
print("年龄:", age)
执行示例:
请输入你的姓名: 李雷
请输入你的年龄: 32
姓名: 李雷
年龄: 32
如果输入错误:
请输入你的姓名: 李雷
请输入你的年龄: abc
错误: 年龄必须是一个数字!
姓名: 李雷
年龄: -1
总结
- 异常(Exception) 是程序运行时的错误。
try-except结构可以防止程序崩溃,并提供错误处理逻辑。- 可以使用多个
except语句处理不同的异常类型。 finally语句无论是否发生异常都会执行,常用于资源释放。- 使用
Exception as e捕获所有异常,并获取错误信息。
更多推荐


所有评论(0)