• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

python中try和except的用法

Python中try和except的用法

try和except是Python中用于异常处理的关键结构,允许程序在遇到错误时优雅地处理,而不是直接崩溃。

基本语法

try:
    # 可能引发异常的代码
    risky_operation()
except ExceptionType:
    # 处理特定类型的异常
    handle_exception()

常见用法示例

1. 基本异常捕获

try:
    num = int(input("请输入一个数字: "))
    result = 10 / num
    print(f"结果是: {result}")
except ValueError:
    print("错误:请输入有效的数字!")
except ZeroDivisionError:
    print("错误:不能除以零!")

2. 捕获多个异常

try:
    # 可能引发多种异常的代码
    file = open("data.txt", "r")
    content = file.read()
    number = int(content)
except (FileNotFoundError, PermissionError):
    print("文件无法打开或不存在")
except ValueError:
    print("文件内容不是有效的数字")

3. 捕获所有异常

try:
    # 可能引发异常的代码
    risky_function()
except Exception as e:
    print(f"发生错误: {e}")
    # 记录日志或其他处理

4. 完整的try-except结构

try:
    # 尝试执行的代码
    file = open("example.txt", "r")
    data = file.read()
    number = int(data.strip())
except FileNotFoundError:
    print("文件未找到")
except ValueError:
    print("文件内容不是有效数字")
else:
    # 如果没有发生异常,执行这里的代码
    print(f"成功读取数字: {number}")
finally:
    # 无论是否发生异常,都会执行
    if 'file' in locals():
        file.close()
    print("清理完成")

5. 自定义异常处理

class CustomError(Exception):
    pass

def validate_age(age):
    if age < 0:
        raise ValueError("年龄不能为负数")
    if age > 150:
        raise CustomError("年龄不合理")

try:
    validate_age(200)
except ValueError as e:
    print(f"输入错误: {e}")
except CustomError as e:
    print(f"自定义错误: {e}")

6. 在实际应用中的使用

def safe_divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        print("除数不能为零")
        return None
    except TypeError:
        print("请输入数字")
        return None
    else:
        return result

# 使用示例
print(safe_divide(10, 2))  # 输出: 5.0
print(safe_divide(10, 0))  # 输出: 除数不能为零 None

最佳实践

  1. 具体化异常类型:尽量捕获具体的异常,而不是通用的Exception
  2. 避免空的except块:至少要记录或处理异常
  3. 合理使用finally:用于清理资源(如关闭文件、数据库连接)
  4. 不要过度使用:只在不影响程序逻辑的预期异常处使用

常见异常类型

  • ValueError:值错误
  • TypeError:类型错误
  • IndexError:索引错误
  • KeyError:字典键错误
  • FileNotFoundError:文件未找到
  • ZeroDivisionError:除零错误

使用try-except可以使程序更加健壮,提高用户体验。

posted on 2025-10-14 21:11  SOC验证工程师  阅读(64)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3