Python 处理异常

简介: Python 处理异常

除了上述常见的 try - except 结构处理异常外,Python 还有一些相关要点:

异常的传递

当函数中发生异常但未在该函数内处理时,异常会向上传递到调用该函数的地方。如果一直没有被处理,最终会导致程序崩溃并显示异常信息。

def divide(a, b):
    return a / b

def main():
    try:
        divide(10, 0)
    except ZeroDivisionError:
        print("在main函数中捕获到除零异常")

main()

divide 函数中,10 / 0 会引发 ZeroDivisionError,由于该函数没有处理此异常,异常传递到 main 函数,main 函数捕获并处理了它。

捕获所有异常

虽然不推荐在大多数情况下使用,但可以使用一个 except 不指定异常类型来捕获所有异常。

try:
    num = int('abc')
    result = 10 / num
except:
    print("发生了异常")

不过这种方式无法区分不同类型的异常,不利于调试和处理特定的错误情况,在实际应用中应尽量避免。

重新引发异常

except 块中可以捕获异常并在某些情况下重新引发它,可能是为了进行额外的处理或让更上层的调用者处理。

def process_number():
    try:
        num = int('abc')
    except ValueError as ve:
        print("捕获到值错误,重新引发...")
        raise ve

try:
    process_number()
except ValueError:
    print("在外部捕获到重新引发的值错误")

process_number 函数中,捕获 ValueError 后打印一些信息,然后使用 raise ve 重新引发相同的异常,外部的 try - except 块再次捕获并处理该异常。

使用 assert 语句进行简单异常处理

assert 语句用于调试,它会测试一个条件,如果条件为假,会引发 AssertionError 异常。

def divide(a, b):
    assert b != 0, "除数不能为零"
    return a / b

try:
    result = divide(10, 0)
except AssertionError as ae:
    print(f"断言错误: {ae}")

这里使用 assert 确保除数不为零,如果违反该条件,AssertionError 异常会被引发,外部的 try - except 块捕获并处理。

相关文章
|
8月前
|
小程序 关系型数据库 MySQL
基于Android的智慧旅游系统的设计与实现
本文探讨智慧旅游平台微信小程序的开发,基于微信小程序、MySQL数据库与uni-app技术,实现信息高效管理与移动端便捷服务,提升旅游信息化水平。
|
8月前
|
存储 Kubernetes Perl
Kubernetes中Pod的常用命令及镜像拉取策略详解
理解Kubernetes中Pod的操作和配置策略,对于保障应用的顺利部署和运行至关重要。通过掌握这些命令和策略,你可以更有效地管理和优化你的Kubernetes集群。
554 17
|
4月前
|
人工智能 API 机器人
OpenClaw 用户部署和使用指南汇总
本文档为OpenClaw(原MoltBot)官方使用指南,涵盖一键部署(阿里云轻量服务器年仅68元)、钉钉/飞书/企微等多平台AI员工搭建、典型场景实践及高频问题FAQ。同步更新产品化修复进展,助力用户高效落地7×24小时主动执行AI助手。
29707 253
|
9月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
2861 108
|
8月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
3007 93
|
机器学习/深度学习 人工智能 API
大模型推理服务全景图
国内大模型推理需求激增,性能提升的主战场将从训练转移到推理。
3166 134
|
9月前
|
存储 人工智能 运维
AI 网关代理 RAG 检索:Dify 轻松对接外部知识库的新实践
Higress AI 网关通过提供关键桥梁作用,支持 Dify 应用便捷对接业界成熟的 RAG 引擎。通过 AI 网关将 Dify 的高效编排能力与专业 RAG 引擎的检索效能结合,企业可在保留现有 Dify 应用资产的同时,有效规避其内置 RAG 的局限,显著提升知识驱动型 AI 应用的生产环境表现。
3452 137
|
8月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
8月前
|
前端开发 开发者
如何计算选择器的权重
如何计算选择器的权重
644 137
|
10月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
579 152