075、Python 关于异常处理try-except语句的使用

Python每天一分钟:python编程中常见的错误一览与修复方法 接触过编程的读者一定对程序运行中出现的错误再熟悉不过了,这些错误有的是因为开发人员疏忽引入的语法错误,有的是缺乏必要检验引起的逻辑或者数据错误,还有的是程序运行中与平台规则冲突引发的系统错误等等。 python中的编程错误 这些错误不可避免地对软件的质量有着非常严重的影响,所以在开发软件的过程中,我们要尽可能的避免这些错误。本文将对python中常见的编程错误予以总结,并介绍修复方法! ... 阅读详情

在实际应用中,比如涉及文件读写、网络通信时,会因为文件不存在、权限不够、网络异常等原因引发异常,或者对数据库连接、查询、更新等操作,会因为连接超时、语法错误、唯一约束冲突等引发异常。

在Java或C#等语言中我们使用try-catch语句来捕捉异常,而在Python中,异常处理使用的是try-except语句。虽然使用不同关键字,但是应用思维大同小异。

下面详细看下Python中的try-except语句。

1、基本语法:

try:  
    # 尝试执行的代码块  
    # 这里放可能会引发异常的代码  
except ExceptionType1:  
    # 如果try块中的代码引发了ExceptionType1异常,则执行此块  
    # 处理ExceptionType1异常的代码  
except ExceptionType2:  
    # 如果try块中的代码引发了ExceptionType2异常,则执行此块  
    # 处理ExceptionType2异常的代码  
# ... 可以有多个except子句来处理不同类型的异常  
except Exception as e:  
    # 捕获所有未被特定except子句捕获的异常  
    # 处理异常的通用代码  
    print(f"An error occurred: {e}")  
else:  
    # 如果没有异常发生,则执行此块  
    # 通常用于执行依赖于try块成功执行的代码  
    print("No exception was raised")  
finally:  
    # 无论是否发生异常,都会执行此块  
    # 通常用于执行清理操作,如关闭文件或释放资源  
    print("This block will always be executed")

在上面的语法中:

  • try块包含可能会引发异常的代码。
  • except块用于捕获并处理特定的异常。可以有多个except子句,每个子句处理不同类型的异常。
  • ExceptionType1, ExceptionType2等是要捕获的异常类型。这些异常可以是内置异常类型(如ValueError, TypeError, ZeroDivisionError等)或自定义异常类型的名称。
  • Exception是一个通用的异常类,可以捕获所有未被特定except子句捕获的异常。使用as e可以将捕获的异常对象绑定到变量e上,以便在except块中引用它。
  • else块是可选的,当try块中的代码成功执行而没有引发异常时,会执行else块中的代码。
  • finally块也是可选的,但无论是否发生异常,它都会执行。通常用于执行清理操作,如关闭文件、释放资源等。

2、常见用法:

1、捕捉特定异常:

def divide_numbers(a, b):  
    try:  
        result = a / b  
        return result  
    except ZeroDivisionError:  
        print("Error: Division by zero is not allowed.")  
        # 这里可以选择返回一个值,抛出一个新的异常,或者做其他处理  
        return None  
  
# 测试
print(divide_numbers(10, 2))  # 输出: 5.0  
print(divide_numbers(10, 0))  # 输出: Error: Division by zero is not allowed.
  • 具体特定的异常常见的有:
名称说明
ValueError传入无效的参数。
TypeError对类型无效的操作。
Warning警告。
SyntaxError语法错误。
RuntimeError运行时错误。
ReferenceError引用错误。
ImportError导入失败。
LookupError无效数据查询的基类。
OSError操作系统错误。

2、处理多个异常类型:

try
{
    int result = Divide(10, 0); // 除以0的异常
    print("结果:" + result);
}
except DivideByZeroException as e:
{
    print("除以0异常:" + e.Message);
}
except ArithmeticException as e
{
    print("算术异常:" + e.Message);
}

3、文件操作:

当读取或写入文件时,可能会出现文件不存在、没有权限等异常情况。

try:  
    with open('example.txt', 'r') as file:  
        content = file.read()  
except FileNotFoundError:  
    print("文件不存在!")  
except PermissionError:  
    print("没有权限读取文件!")  
except Exception as e:  
    print(f"发生了一个错误: {e}")

4、网络请求

在发送HTTP请求时,可能会因为网络问题或服务器错误而失败。

import requests  
  
try:  
    response = requests.get('http://example.com')  
    response.raise_for_status()  # 如果响应状态码不是200,则抛出HTTPError异常  
    print(response.text)  
except requests.exceptions.HTTPError as errh:  
    print("Http Error:", errh)  
except requests.exceptions.ConnectionError as errc:  
    print("Error Connecting:", errc)  
except requests.exceptions.Timeout as errt:  
    print("Timeout Error:", errt)  
except requests.exceptions.RequestException as err:  
    print("Something Else", err)

5. 用户输入验证

在接收用户输入时,可能需要进行一些验证,以确保输入是有效的。

try:  
    age = int(input("请输入你的年龄: "))  
    if age < 0:  
        raise ValueError("年龄不能是负数!")  
except ValueError as e:  
    print(e)  
except Exception as e:  
    print("发生了一个错误:", e)

6. 数据库操作

与数据库交互时,可能会遇到连接失败、查询错误等问题。

import sqlite3  
  
try:  
    # 连接到SQLite数据库(如果数据库不存在,则会自动在当前目录创建)  
    conn = sqlite3.connect('example.db')  
    c = conn.cursor()  
      
    # 执行SQL命令  
    c.execute('''CREATE TABLE stocks  
                 (date text, trans text, symbol text, qty real, price real)''')  
except sqlite3.Error as e:  
    print(e)  
finally:  
    if (conn):  
        conn.close()
学习笔记 | Python中try-except-else-finally的执行顺序 学习try-except-else-finally的执行顺序的笔记 阅读详情

相关推荐

Cursor开发AI Agent实战:破除零代码幻觉的技术越界指南

AI Agent是当前智能应用的核心范式,其本质是通过大模型驱动工具调用与多步推理完成复杂任务。实现可靠Agent需深入理解异步编程、提示工程、错误处理与上下文管理等关键技术原理。Cursor作为AI原生IDE,通过深度上下文感知、调试闭环和Agent专属规则支持,显著提升开发效率,但无法替代对Python、LangChain和系统环境的工程认知。它真正价值在于将开发重心从语法纠错转向意图建模、工具链设计与状态管理——即聚焦产品逻辑本身。本文基于真实翻车案例,详解Cursor在AI Agent开发中的落地路

weixin_30751947的博客 468

95. Python基础教程:异常处理try...except语句

【语法总结】try : # 可能会发生异常的代码块 # 1. 单独的except except : print("输入有问题,程序不能正常输出结果。") # 2. except+异常名称 except ZeroDivisionError : print("输入有问题,程序不能正常输出结果。

weixin_63986098的博客 5万+

阿里云Happy Horse文生视频API实战:从原理到企业级部署指南

文生视频技术作为生成式AI的重要分支,通过深度学习模型实现从文本描述到动态视频内容的端到端生成。其核心原理基于扩散模型和时空注意力机制,能够理解文本语义并生成具有物理真实性的连续帧序列。这项技术的价值在于大幅降低了视频制作的技术门槛和时间成本,为内容创作、电商展示、教育培训等场景提供了高效解决方案。阿里云Happy Horse模型作为国产AI视频技术的代表,支持多语言输入和灵活的参数配置,采用异步调用架构确保系统稳定性。在实际工程应用中,开发者可以通过API接口快速集成文生视频能力,结合提示词工程和参数调优

无花的专栏 679

Python异常处理:try...except语句

最后,值得一提的是,在 Python 3.x 中,我们可以使用更为灵活和强大的with语句来代替语句块,实现资源的自动关闭。在上述代码中,我们使用with语句打开名为test.txt的文件,并读取其中的内容。在with语句块执行完毕后,文件会自动关闭,避免了手动调用close()方法的繁琐操作,也避免了因忘记关闭文件而导致的资源泄漏等问题。Poycode编程指南上的文章:Python文件和IO操作:读写文本文件、读写二进制文件总之,Python异常处理是编写稳定、可靠程序的重要组成部分。通过熟练掌握。

bagell的博客 4468

DeepSeek V4 Pro与Flash混合编程工作流设计

大模型代码生成工作流的核心在于任务分工而非能力叠加。理解模型能力光谱与token经济的关系,是实现高质量、低延迟、低成本协同的基础。DeepSeek V4 Pro擅长数学建模、多步逻辑推演等高价值算法生成,而Flash在模板化胶水代码、CLI封装、异常处理等工程化场景中具备高确定性与版本兼容性优势。通过意图识别切片、分层执行与成本熔断机制,可将API费用降低60%以上,同时提升首次交付通过率。该模式适用于VS Code插件集成、本地+云混合部署及企业级AI编码提效场景。

weixin_36250534的博客 407

阿里云百炼Happy Horse文生视频API实践:从调用到部署完整指南

文生视频技术作为AI内容生成的重要分支,基于深度学习模型将文本描述转化为连贯的视频画面。其核心原理是通过大规模多模态数据训练,使模型理解语言与视觉的对应关系。这项技术的价值在于大幅降低视频制作门槛,提升内容创作效率。在实际应用中,文生视频广泛用于产品演示、教育培训、社交媒体内容制作等场景。以阿里云百炼平台的Happy Horse模型为例,该模型支持通过API调用实现高质量视频生成,开发者可以通过环境配置、参数调优和异步任务处理等工程实践,快速集成文生视频能力到自己的应用中。Happy Horse模型在AI视

weixin_34268843的博客 365

Python教学 | 有备无患!详解 Python 异常处理(try-except)

通过正确地使用try-except,我们可以提高代码的健壮性和可靠性,避免程序崩溃,并且更好地掌控程序流程。

weixin_55633225的博客 4万+

Claude Sonnet4:面向工程落地的AI编程协作者

编程模型正从语法生成工具演进为工程语境理解者。现代AI代码助手需超越LeetCode式解题,深入框架约定、部署约束与架构原则,在真实CI/CD、高并发、跨平台等场景中预判风险。Claude Sonnet4凭借对HTTP状态码语义、分布式幂等性、可观测性指标等工程要素的深度建模,实现从‘能写’到‘可交付’的跃迁。其200K上下文支持项目级脉络理解,使代码审查覆盖异常分层捕获、JWT刷新安全、N+1查询根因等高阶问题,成为中高级开发者嵌入日常开发、技术债治理与文档同步工作流的‘第三只手’。

agtvo48266的专栏 459

Python使用 try-except 捕获与处理异常

但是,在开发和调试过程中,过度捕获异常可能会掩盖代码中的问题,因此需要慎重。,我们可以有效提高程序的健壮性,确保程序在遇到问题时不会崩溃,并且可以对用户提供友好的反馈信息。语句来捕获所有异常。这种方法适用于对程序健壮性要求较高的场景,但在实际开发中,最好只捕获你预期的异常类型,以免忽略了某些重要的错误。这种方式的好处是,即使用户输入了错误的数据,程序也可以继续运行下去,并提示用户重新输入正确的数据,而不是因为错误而中断执行。块中对这些异常进行捕获,程序可以根据不同的错误类型提供相应的提示,而不是直接崩溃。

分享人工智能领域原创文章 5725

Unity与ROS通信实战:从零搭建机器人仿真与数字孪生环境

机器人操作系统(ROS)作为机器人开发的核心框架,通过节点、话题和服务等机制实现模块化通信与算法集成。其通信原理基于分布式消息传递,为机器人感知、决策与控制提供了标准化接口,极大提升了算法开发与集成的效率。在机器人仿真与数字孪生领域,将ROS的成熟算法生态与强大的3D实时渲染引擎结合,能构建高保真的虚拟测试环境,用于算法验证、系统测试与教学演示。本文聚焦于打通ROS与Unity的通信链路,详细解析了如何通过ROS-TCP-Endpoint这一核心功能包,构建TCP/IP通信桥接,实现从ROS控制指令发布到U

dht91597的博客 395

Claude Opus 5技术解析:Token效率优化与API集成实战指南

Token是AI大模型处理文本的基本单位,其工作原理基于BPE等编码算法将文本分割为模型可处理的离散单元。在技术原理层面,通过注意力机制压缩和分层表示技术,模型能够在保持性能的同时显著降低计算复杂度。这种优化带来的技术价值体现在大幅降低API使用成本,提升开发效率。在应用场景中,特别是在RAG检索增强生成和代码生成任务中,token效率优化能够转化为显著的经济效益。本文以Claude Opus 5为例,深入解析其如何通过动态稀疏注意力等创新技术,在接近Fable 5性能的同时实现token消耗的大幅降低,为

weixin_33719619的博客 307

如何用Python轻松控制Linux嵌入式外设的终极指南

想象一下,你正在开发一个智能家居控制系统,需要同时读取温度传感器、控制LED灯带、调节风扇转速,并与主控板通信。传统方法可能需要编写复杂的C代码、处理底层驱动,甚至需要重新编译内核。但现在,有了python-periphery这个纯Python库,你可以用几行Python代码就能搞定所有这些硬件交互任务,无需深入底层细节。python-periphery是一个专为Linux嵌入式平台(如树莓派、B

gitblog_00304的博客 828

Python学习笔记 - 探索断点操作结合异常处理

断点与异常处理的结合应用是高效调试与健壮性代码编写的重要手段。断点帮助开发者快速定位问题,异常处理则能有效应对运行时的各类错误。在程序开发过程中,将两者结合使用,可以更清晰地理解代码运行流程并构建高容错性的程序结构。熟练掌握这些技术,将极大提升代码质量和开发效率。

Mr数据杨 720

阿里云Happy Horse文生视频API实战:从接入到生产部署

文生视频技术基于扩散模型原理,通过文本描述直接生成视频内容,实现了从概念到视觉的自动化转换。这项技术的核心价值在于大幅降低视频制作门槛,提升内容创作效率。在工程实践中,API接口设计、异步任务处理和错误恢复机制是关键环节。阿里云Happy Horse模型凭借物理真实性和运动流畅性优势,为开发者提供了成熟的文生视频解决方案。在实际应用场景中,该技术可广泛应用于短视频创作、电商展示和教育培训等领域,特别是通过异步调用和轮询机制确保了大文件生成的稳定性。本文以Happy Horse API为例,详细解析了从环境配

weixin_30307921的博客 366

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 280

PLSQL 14.0.6 下载使用教程

众所周知,PLSQL 只是一个oracle第三方开发测试工具,它依赖oracle 客户端搭配使用,但是oracle 客户端有2G,相当庞大,不建议安装。所以我们如果下载安装好PLSQL,再下载好轻量级的支持远程链接的oracle客户端,这样搭配使用可以的话就最好了,答案是可以的。 第一步: PLSQL 下载与安装 PLSQL 14.0.6 下载地址 : https://www.allroundautomations.com/registered-plsqldev/ 下载下来,除了安装路径更改一下,

qq976511508的博客 2135

AI服务商变动下的技术架构韧性:适配器模式与多模型降级策略

在软件工程中,依赖外部服务是常见架构模式,但单一依赖会带来供应商锁定和单点故障风险。适配器模式通过定义统一接口,将核心业务逻辑与具体服务实现解耦,实现技术栈的灵活切换。这一设计原则在AI应用开发中尤为重要,因为商业API的定价、策略和服务稳定性可能随公司战略调整而变化。通过抽象层封装不同AI提供商(如OpenAI、Claude、本地模型),开发者可以构建具备韧性的系统,在主服务异常时自动降级到备用方案,保障业务连续性。本文以OpenAI近期人事变动为引,探讨如何运用适配器模式、配置管理和健康检查机制,设计一

weixin_30315723的博客 412

WPS文档编辑时空行问题解决方案

本文详细介绍了如何解决WPS文档编辑时空行的问题,从问题描述与分析、解决方案详解到操作示例与注意事项等多个方面进行了全面阐述。通过本文的介绍和指导,用户可以快速定位问题根源并采取有效措施进行解决,从而提升文档编辑效率和美观性。未来,随着WPS软件的不断升级和优化,相信会有更多便捷高效的功能被添加到软件中。同时,用户也需要不断学习和探索新的操作技巧和方法,以适应不断变化的办公需求。希望本文能够为广大WPS用户提供有益的参考和帮助,共同推动办公效率的提升和发展。

mmoo_python的博客 1244

ROS参数服务器详解:从核心机制到工程实践

在机器人软件工程中,配置管理是解耦系统组件、实现动态调试的关键基础。其核心原理在于提供一个集中式的键值存储,允许程序在运行时读取和修改配置,而无需重新编译。这项技术的核心价值在于提升了系统的灵活性与可维护性,使得算法参数调整、传感器标定和设备配置变得高效。典型的应用场景包括机器人控制器PID参数整定、多传感器融合的阈值设置,以及不同运行模式(如仿真与实机)的切换。本文聚焦于ROS(Robot Operating System)参数服务器的具体实现,深入剖析其作为集中式存储的机制,并详细讲解如何通过rospy

weixin_34111790的博客 508

得利捷datalogic扫码枪调试说明

针对得利捷datalogic扫码枪快速调试并,可以根据详细步骤设置扫码枪,并配有tcp调试助手辅以验证,以达到快速调试完成扫码枪的工作。

Conway510的博客 1万+

基于大模型的急性重症胰腺炎全流程预测与诊疗方案研究

本研究构建了基于大模型的急性重症胰腺炎(SAP)全流程预测与诊疗系统,实现了从术前风险评估到术后康复管理的精准诊疗闭环。通过整合临床信息、实验室检查和影像学等多源数据,模型在测试集上预测准确率达X%,AUC为X,显著优于传统评分系统。研究创新性地将预测结果应用于手术方案制定、麻醉决策、并发症防控及个性化护理,形成智能化诊疗方案。验证结果显示模型具有良好的稳定性和临床适用性,同时配套的健康教育体系提升了患者自我管理能力。尽管存在样本局限性和模型可解释性等不足,该研究为SAP的精准诊疗提供了新范式,未来可通过扩

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1116

oCPC 目标ROI调控:PID算法实战,3种参数调优策略与API集成

本文深入探讨了如何利用PID控制算法实现oCPC广告的目标ROI自动化调控,详细介绍了PID算法的基础原理、参数调优策略及与Marketing API的集成方法。通过三种实战调优策略(阶跃响应法、Ziegler-Nichols法则和自适应参数调整),帮助广告优化师精准控制ROI,提升广告投放效率。文章还提供了应对平台侧干扰的工程策略和不同行业的参数设置经验,为数字营销领域的专业人士提供了一套完整的工程实现方案。

488

IP路由原理、静态路由及动态路由区分

什么是路由 路由是指导IP报文发送的路径信息。 直连路由:目的地所在网络与路由器直接相连。 间接路由:目的地所在网络与路由器非直接相连。 静态路由是由管理员手工配置而生成的路由。 动态路由路由器使用路由协议从其他路由器那里获悉的路由。

weixin_42227328的博客 5470

MaixCAM与无刷电机云台视觉跟踪系统开发实战

无刷直流电机(BLDC)作为现代精密控制系统的核心执行器,通过电子换相技术实现了高精度、高效率的旋转控制。其工作原理基于三相全桥驱动电路,配合霍尔传感器或反电动势检测实现精准的转子位置控制。在嵌入式视觉领域,无刷电机凭借高扭矩、低噪音的特性,结合PID控制算法,能够实现亚毫米级的定位精度。这种技术组合在机器人视觉伺服、智能监控云台等场景中具有重要价值。通过串口通信协议与视觉处理平台(如搭载Kendryte K510的MaixCAM)集成,可以构建完整的目标跟踪系统。本文以轮趣无刷电机云台与MaixCAM的适

weixin_34293059的博客 383

电磁波函数复数表示法:为什么物理学家偏爱e^(ikz)而非cos(kr-wt)?

本文深入解析了电磁波函数复数表示法(如e^(ikz))相较于传统余弦形式的巨大优势。通过欧拉公式,复数形式将复杂的三角运算转化为简洁的指数运算,在微分、积分、线性叠加及处理相位时展现出极高的计算效率,是物理学家和工程师分析波动现象的核心工具。

weixin_29094539的博客 498

利用按键精灵实现批量截图与智能命名的高效工作流

本文详细介绍了如何利用按键精灵软件构建高效的批量截图与智能命名自动化工作流。通过基础脚本编写、循环逻辑实现及高级命名策略,解决手动操作耗时易错的问题,帮助用户实现一键自动截图、智能保存与文件重命名,大幅提升软件测试、教程制作及数据报告等场景的工作效率。

weixin_29268267的博客 569
上一篇: 074、Python 关于实例方法、静态方法和类方法
下一篇: 076、Python 身份运算符详解
程序猿游也
博客等级 码龄9年 2278粉丝 273原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿游也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值