python让程序更健壮 – 异常处理:基本的异常处理

阿里云教程2个月前发布
20 0 0

目前我们来学习异常处理的核心技能

就像学习游泳要先学会基本的划水动作一样,学习异常处理要从 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 的使用要点:

  1. try 块包含可能出错的代码
  2. except 块处理特定的异常
  3. 可以多个 except 处理不同类型的异常
  4. 使用 Exception 可以捕获所有异常
  5. 使用 as e 可以获取异常的具体信息

记住: 异常处理不是隐藏错误,而是优雅地处理错误!

接下来我们将学习 else 和 finally 子句,让异常处理更加强劲!

© 版权声明

相关文章

暂无评论

none
暂无评论...