python中的try except结构

基本语法

基础结构

try:
    # 可能会出错的代码
    result = 10 / 0
except:
    # 出错时的处理
    print("出错了!")

更完整的结构

try:
    # 尝试执行的代码
    num = int(input("请输入一个数字:"))
    result = 10 / num
except ZeroDivisionError:
    # 处理除零错误
    print("不能除以0!")
except ValueError:
    # 处理值错误(比如输入的不是数字)
    print("请输入有效的数字!")
except Exception as e:
    # 处理其他所有异常
    print(f"发生了未知错误:{e}")
else:
    # 如果没有异常发生,执行这里
    print(f"计算结果:{result}")
finally:
    # 无论是否发生异常,都会执行
    print("程序执行完毕")

常见异常类型

    1. ZeroDivisionError - 除零错误
    1. ValueError - 值错误
    1. TypeError - 类型错误
    1. IndexError - 索引错误
    1. KeyError - 键错误
    1. FileNotFoundError - 文件找不到错误

实际例子

例1:处理除零错误

try:
    x = 10
    y = 0
    result = x / y
except ZeroDivisionError:
    print("除数不能为零!")

例2:处理文件操作

try:
    file = open("不存在的文件.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("文件不存在!")
finally:
    try:
        file.close()  # 尝试关闭文件
    except:
        pass  # 如果文件没打开,忽略错误

例3:处理用户输入

while True:
    try:
        age = int(input("请输入你的年龄:"))
        if age <= 0:
            print("年龄必须大于0!")
            continue
        break
    except ValueError:
        print("请输入有效的数字!")

最佳实践建议

  • 不要滥用:不要用 try-except 替代正常的条件判断
# 不好:
try:
    value = my_dict[key]
except KeyError:
    value = None

# 更好:
value = my_dict.get(key)  # 使用 get 方法
  • 具体化异常:尽量捕获具体的异常,而不是用 except:捕获所有
  • 记录错误:在生产环境中,应该记录错误信息
  • 资源清理:使用 finally 或 with 语句确保资源被释放

简单总结

  • try:尝试执行可能会出错的代码
  • except:捕获并处理特定的异常
  • else:没有异常时执行
  • finally:无论是否异常都会执行
posted @ 2026-04-29 11:19  MKYC  阅读(7)  评论(0)    收藏  举报