导读:本期聚焦于小伙伴创作的《Python中的异常处理如何实现 try-except块有哪些常见用法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python中的异常处理如何实现 try-except块有哪些常见用法》有用,将其分享出去将是对创作者最好的鼓励。

Python中的异常处理机制通过捕获程序运行时的错误,避免错误直接导致程序终止,而try-except块是实现这一机制的核心结构,通过特定语法可以捕获并处理不同类型的异常。

Python中的异常处理如何实现 try-except块有哪些常见用法

Python异常处理的基本实现

Python的异常处理基本结构由try、except、else、finally四个子句组成,其中try和except是必需部分,else和finally为可选部分。try块中放置可能出现异常的代码,当try块中的代码触发异常时,程序会跳转到对应的except块执行处理逻辑;如果try块代码正常执行没有异常,则不会执行except块内容。

基础的try-except语法结构如下:

try:
    # 可能出现异常的代码
    result = 10 / 0
except ZeroDivisionError:
    # 处理除零异常的逻辑
    print("除数不能为0")

try-except块的常见用法

1. 捕获指定类型的异常

可以在except后面指定具体的异常类型,只捕获对应类型的异常,这样能更精准地处理错误,避免误捕获其他不相关的异常。常见的内置异常类型有ZeroDivisionError(除零错误)、TypeError(类型错误)、ValueError(值错误)、FileNotFoundError(文件未找到错误)等。

示例:捕获类型错误和值错误

try:
    num = int("abc")
except ValueError:
    print("输入的字符串无法转换为整数")

2. 捕获多种类型的异常

如果需要同时捕获多种不同类型的异常,可以在except后面用括号包裹多个异常类型,也可以写多个except子句分别处理不同类型的异常。

方式一:单个except捕获多个异常

try:
    data = [1, 2, 3]
    print(data[5])
except (IndexError, TypeError):
    print("索引错误或者类型错误")

方式二:多个except子句分别处理

try:
    file = open("test.txt", "r")
    content = file.read()
except FileNotFoundError:
    print("文件不存在")
except PermissionError:
    print("没有文件读取权限")

3. 捕获所有异常

如果不指定异常类型,直接使用except:,可以捕获所有类型的异常,但这种方式不推荐在生产环境大量使用,因为会捕获包括系统退出、键盘中断等在内的所有异常,不利于排查问题。更推荐的方式是捕获Exception类,它可以捕获绝大多数常见的程序异常,同时不会捕获系统级的特殊异常。

try:
    import non_exist_module
except Exception as e:
    # 可以通过as关键字获取异常对象,查看异常信息
    print(f"捕获到异常:{e}")

4. 搭配else子句使用

else子句放在所有except子句之后,当try块中的代码没有触发任何异常时,会执行else块中的内容,通常用于放置try块代码正常执行后需要处理的后续逻辑。

try:
    num1 = 10
    num2 = 2
    result = num1 / num2
except ZeroDivisionError:
    print("除数不能为0")
else:
    print(f"计算结果为:{result}")

5. 搭配finally子句使用

finally子句无论try块是否触发异常,也无论except块是否执行,都会被执行,通常用于释放资源,比如关闭打开的文件、断开数据库连接等。

file = None
try:
    file = open("test.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("文件不存在")
finally:
    if file:
        file.close()
        print("文件已关闭")

6. 自定义异常并抛出

除了捕获内置异常,还可以自定义异常类,通过raise关键字主动抛出异常,在try-except块中捕获自定义异常进行处理。

# 自定义异常类,继承Exception
class AgeError(Exception):
    pass

def check_age(age):
    if age < 0 or age > 150:
        raise AgeError("年龄必须在0到150之间")
    return age

try:
    check_age(200)
except AgeError as e:
    print(f"年龄校验失败:{e}")

使用try-except的注意事项

  • 不要把所有代码都放在try块中,只需要将可能出现异常的代码放入,避免异常捕获逻辑过于笼统
  • 捕获异常后尽量做有意义的处理,不要只写pass空语句,不利于后续问题排查
  • 不要在except块中再次抛出不相关的异常,保持异常处理的逻辑清晰

Python异常处理try-except异常捕获修改时间:2026-06-12 05:39:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。