目前我们来学习异常处理的核心技能
就像学习游泳要先学会基本的划水动作一样,学习异常处理要从 try-except 这个最基本的结构开始!
try-except 的基本结构 ️
try:
# 尝试执行这里的代码
# 这里放置可能出错的代码
except:
# 如果try中的代码出错了,就执行这里的代码
# 这里放置错误处理代码
让我们一步步来学习!
示例1:处理除零错误
print("=== 除法计算器 ===")
try:
num1 = int(input("请输入被除数: "))
num2 = int(input("请输入除数: "))
result = num1 / num2
print(f"{num1} ÷ {num2} = {result}")
except ZeroDivisionError:
print("❌ 错误:除数不能为零!")
print("程序继续运行...")
运行结果:
=== 除法计算器 ===
请输入被除数: 10
请输入除数: 0
❌ 错误:除数不能为零!
程序继续运行...
示例2:处理输入错误
print("=== 年龄验证 ===")
try:
age = int(input("请输入你的年龄: "))
if age >= 18:
print("✅ 欢迎进入!")
else:
print("❌ 未满18岁,禁止进入!")
except ValueError:
print("❌ 请输入有效的数字年龄!")
print("感谢使用年龄验证系统!")
捕获特定类型的异常
Python有许多不同类型的异常,我们可以针对性地处理:
# 示例3:多种异常处理
try:
# 打开文件
filename = input("请输入文件名: ")
file = open(filename, 'r')
# 读取内容并转换为数字
content = file.read()
number = int(content)
# 进行计算
result = 100 / number
print(f"结果是: {result}")
except FileNotFoundError:
print("❌ 错误:文件不存在!")
except ValueError:
print("❌ 错误:文件内容不是有效的数字!")
except ZeroDivisionError:
print("❌ 错误:不能除以零!")
print("程序安全结束!")
捕获所有异常
有时候我们想捕获所有可能的异常:
# 示例4:捕获所有异常
try:
num = int(input("请输入数字: "))
result = 10 / num
print(f"结果是: {result}")
except Exception as e:
print(f"❌ 发生错误: {e}")
print(f"错误类型: {type(e).__name__}")
print("程序继续执行...")
实际应用:用户注册系统
def create_user_account():
print("=== 用户注册 ===")
try:
username = input("请输入用户名: ")
if len(username) < 3:
raise ValueError("用户名至少3个字符")
age = int(input("请输入年龄: "))
if age < 0 or age > 150:
raise ValueError("年龄必须在0-150之间")
print(f"✅ 注册成功!欢迎 {username}")
except ValueError as e:
print(f"❌ 输入错误: {e}")
except Exception as e:
print(f"❌ 未知错误: {e}")
# 测试
create_user_account()
常见异常类型速查表
|
异常类型 |
说明 |
例子 |
|
ZeroDivisionError |
除数为零 |
10 / 0 |
|
ValueError |
值错误 |
int(“abc”) |
|
TypeError |
类型错误 |
“hello” + 123 |
|
IndexError |
索引越界 |
list[10](列表只有3个元素) |
|
KeyError |
字典键不存在 |
dict[“不存在的键”] |
|
FileNotFoundError |
文件不存在 |
open(“不存在的文件.txt”) |
练习时间!
练习1:改善计算器
# 请为这个计算器添加异常处理
def calculator():
num1 = float(input("请输入第一个数字: "))
operator = input("请输入运算符 (+, -, *, /): ")
num2 = float(input("请输入第二个数字: "))
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
result = num1 / num2
else:
result = "无效的运算符"
print(f"结果: {result}")
# 你的任务:添加异常处理,防止程序崩溃
总结
try-except 的使用要点:
- try 块包含可能出错的代码
- except 块处理特定的异常
- 可以多个 except 处理不同类型的异常
- 使用 Exception 可以捕获所有异常
- 使用 as e 可以获取异常的具体信息
记住: 异常处理不是隐藏错误,而是优雅地处理错误!
接下来我们将学习 else 和 finally 子句,让异常处理更加强劲!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...