洗礼灵魂,修炼python(28)--异常处理(2)—>运用异常

多AI编程助手并行失控?终端复用与worktree隔离实战 终端是开发者与机器交互的核心通道,但在并行使用多个自然语言编程助手时,终端环境中输入输出抢占、文件冲突、上下文混乱等问题会被急剧放大。解决这类并发协作问题的关键,不在于AI工具本身,而在于底层终端与代码仓库的管理方式。终端复用工具tmux能提供独立会话与窗口,让每个工具有良好的隔离环境;git worktree则可创建并行工作树,从文件系统层面避免改动互相覆盖。配合日志落盘和清晰的调度策略,即可在有限的认知负荷下稳定驾驭多个AI助手。这种以隔离为核心的多任务协作模型,同样适用于多人远程开发、多环境并行调试、 阅读详情

你可能会想,卧槽这标题取的,前面不是说异常就是报错吗?异常还能运用?

是的,异常确实可以运用,可以刻意制造异常,在出现异常时捕获异常并对异常处理,所以进入本篇博文的话题—异常处理

异常处理:

异常处理分两个,捕获异常和抛出异常

一、捕获异常

1.为什么要捕获异常?

这个问题应该都会想到的,出错就出错,改就是啊,不急,先看一个例子:

我个人理解:在实际的开发中,异常是很常见的,程序员需要事先考虑所有的可能性,不然的话,你把你的程序给用户用,出现像上面这个情况,这样影响很大,在客户的角度,他们不管是什么,也不会在意这报错的是什么,他们希望的就是代码运行,永远不会出错,该怎么样就怎样的,如果出错,他们就会觉得不行,体验差,然后跟你抱怨怎么样怎么样,在他们心里也会觉得你并不是一个好的程序员。所以,异常,我们是在开发时就要考虑所有的可能性的,并且对每个可能性做出针对性的处理,让客户看不到这段红色的报错,并且用一个简单的或者通俗易懂的提示告诉客户哪里有问题。所以需要捕获异常

2.怎么捕获:

使用try-except[-finally]语句捕获异常

格式:

try:
     检测范围(代码块)
except Exception[as reason]  #使用Exception表示接受所有的异常,因为前面说了Exception是所有异常的基类
     出现异常(Exception)后的处理代码
finally:
     无论如何都会被执行的代码

例:

注意:

1):这里的except语句就是用来捕获异常类的,当你知道程序会报什么类型的错,就在后面写上什么异常类,这就是捕获

2):finally语句并不是必须出现,可以省略,finally语句的作用是无论如何都要运行,不管捕获到异常与否(下面会详解)

3):try语句其实也是判断语句中的一种,和if语句很相似,只是相对if比较特殊

 

3.else语句

说到这里,我想你应该发现了,try语句是捕获异常的,那如果程序没有出错呢?如果程序没错,那必须得输出结果对吧?前面又说到其实try语句就是判断语句中的一种,那么if都可以有else,try可不可有呢?当然可以,else语句就是当程序没错时作输出用的(是不是和if判断语句里的用法不太一样?下面会详解)。例:

 

不过要注意的是,else语句必须写在finally语句前面,不然啊报错:

 

 

4.打印异常

前面的代码中,可以看出程序捕获到异常后,会反馈给用户一个提示。但是又出现一个很常见的问题,在开发中,虽然我们尽可能的把我们想到的所有可能性做出了相应的解决方案,但是总有百密一疏的时候对吧?那么我们的程序在出现BUG的时候,由于我们把异常规避了,给用户一个提示完事,那万一就是这里出现错误,我们需要根据异常来修复程序,但是异常被规避了看不到啊,怎么办呢?

这里就又有一个新的写法:as语句(在前面导入模块时用过的)

看到没,我把这个异常类用as语句定义到一个变量里,然后打印这个变量,这样,上面那句话是提示给用户的,下面那句话就给我们程序员看的。这样是不是就给我们带来方便了?

二、抛出异常

1.什么是抛出异常:

为了开发需要,刻意的让程序报错

2.怎么抛出:

使用raise语句

格式:

raise  异常类

例:

 

raise语句就可以刻意的制造异常

 三、从实际案列中剖析问题

例:打开文档并打印文档内容

 

在前面【文件操作】那一章应该都知道文件操作,如果不再需要文件,最后要把文件关闭的对吧?那么在程序某个过程报错时,程序就会跳出并结束,下面的代码就不再进行,所以根本到不了关闭语句那里,但是此时文件还是开启状态的,所以文件就一直是挂起状态,这样对开发的影响是很大的。而这里有了finally语句就可以无论如何都运行,所以无论如何都会在最后执行关闭语句把文件关闭了,这里就可以看出finally语句的功效了

 

前面文件操作时,应该介绍过with语句了,这里既然都说到文件操作,就再提一下。

with语句的功能就是在打开对象时,如果在一定时间内不再对对象有操作,那么with语句将会自动的把对象关闭,这也是python的回收机制的功劳

注意:

1.当有使用with语句,就可以不使用finally语句来关闭文件

2.python2和python3里异常类有点不同:

1):python2:

 

2):python3:

 

python2和python3还有哪些不同不一一解析,自己去体验吧,如果后面有时间,我专门开一篇博文介绍python2和python3的差别

 

四、else语句在if语句,while和for循环语句和在try语句里的区别

  • 在if循环里:else表示否则则运行
  • 在while和for循环里:else表示干完了能怎样,或者表示干不完就别想怎样。但当有break跳出循环,则不运行else
  • 在try语句里:else表示如果没有异常,那就运行,有问题就不会运行

 

好的,异常处理这一块讲解完毕

思博伦Spirent TestCenter创建单播流uni-stream Traffic Generator列表中会出现刚才创建的uni-stream,创建完成。通常测试情况下,主要对Ethenet II和IPv4 Header进行配置。(通常情况下,如果流配置比较规范,选择任意端口接收,也没问题。编辑uni-stream基本信息。配置本条流由STC哪个端口接收。 阅读详情

相关推荐

智能车竞赛走马观碑组:赛道元素与目标板识别策略解析

本文深入解析了智能车竞赛走马观碑组别的核心挑战与策略。重点探讨了如何应对PVC赛道的光照、磨损及无边界线等复杂环境,并详细阐述了基于红色引导区的目标板高效识别流程。通过平衡轻量化模型选择、实时决策与精准控制,实现赛道元素适应性与目标板识别策略的优化,为参赛者提供了一套完整的系统集成与实战调参思路。

x8y9z0的博客 458

异常的捕获和处理

异常的概述: 认识异常: 异常时指在程序的运行过程中所发生的不正常时间,比如文件找不到,网络连接中断,数组xia'biao'yue'x

qq_47718177的博客 446

Win10系统权限深度解析:如何安全地将C盘所有者从TrustedInstaller变更为Administrators

本文深入解析了Win10系统中C盘文件权限管理的核心机制,解释了为何管理员账户(Administrators)默认无法修改由TrustedInstaller保护的系统文件。文章在强调安全风险的前提下,详细提供了通过图形界面和命令行两种方式,将文件或文件夹所有权从TrustedInstaller安全变更为Administrators的实操步骤,并给出了关键的风险预警与权限恢复方法。

weixin_29305313的博客 547

【JavaSE专栏68】异常的捕获和处理,try-catch-finally高效解决异常处理问题

本文讲解了 Java 中异常的捕获和处理概念及语法,并给出了样例代码。捕获异常可以处理运行过程中可能出现的错误情况,防止程序因为异常而终止执行。通过捕获异常并采取合适的处理措施,可以使程序更加健壮和稳定。

Designer 小郑的技术博客 3507

免安装版Notepad++终极配置:右键菜单+图标美化+多文件批量处理(2024新版)

本文详细介绍了如何为免安装版Notepad++进行终极配置,包括右键菜单添加、图标美化以及多文件批量处理功能。通过注册表编辑和高级定制,用户可以在便携版中实现与安装版相同的功能体验,同时保持系统整洁。特别适合开发者、系统管理员和效率追求者使用。

nut55的博客 830

STM32外围电路硬件解析

复位 :让MCU回到最开始的状态。并且从头开始,重新执行程序 我们什么时候需要复位? 1.烧录的时候 2.程序跑飞了的时候 3.上电复位(上电的时候需要复位) 复位方式: 1.上电复位: --- 一定要有 MCU的Reset是复位引脚,当这个引脚为低电平时,

qq_39577221的博客 1万+

异常传播与捕获

对于 `IOException`,你选择重新抛出异常,是因为该异常可能是系统中断或不可恢复的错误,或者它涉及到事务的回滚,需要通知调用者(或者事务管理器)进行更进一步的处理。- 对于 **`Exception`**,日志的内容表明这是一个 **非 I/O 的其他异常**,这种异常可能包括代码错误、配置问题等,记录这个日志是为了捕获那些不常见、但可能影响系统稳定性的错误。例如,你可能有一个数据库异常,在捕获之后,可以将它转换为更合适的业务异常并抛出,这样上层调用者可以更好地理解异常的含义。

weixin_47495688的博客 542

Shopee App加密算法逆向实战:从libshpssdk.so到x-sap-ri的生成机制

本文详细解析了Shopee App核心加密参数x-sap-ri的生成机制。通过逆向分析libshpssdk.so动态库,揭示了其采用9套算法动态切换的复杂签名逻辑,并分享了从抓包定位、Frida动态调试到Unidbg模拟执行的全过程实战经验,为移动应用安全研究提供了完整的技术路径。

weixin_29323551的博客 1327

SpringBoot之全局捕获异常

一.为什么要用全局来捕获异常 全局捕获异常是指:整个web请求项目全局捕获异常。 举一个很简单的例子,当我们写代码时肯定会报错,出现一些bug,但是我们不想把我们的bug展示给客户,那么我们肯定就要创建一个异常类来捕获出现的异常给我们的后端开发人员,这里就要用到全局捕获异常。所以说,如果我们架构一个项目的时候,我们必须要有这么一个类来捕获异常,否则用户在用我们的系统的时候,当出现bug时会给用户展...

qq_43540133的博客 441

手把手教你学Simulink--基于飞轮储能系统的场景实例:飞轮储能与锂电池混合储能系统的协同控制

本文详细介绍了基于Simulink的飞轮储能与锂电池混合储能系统协同控制建模方法。通过高通/低通滤波器实现功率分配,使飞轮处理高频波动(±100kW),锂电池承担削峰填谷(50kW)。仿真结果表明,该系统效率达88%,锂电池循环次数减少90%,投资成本比纯电池方案节省200万美元。文章包含完整的建模步骤、控制策略设计和多场景仿真分析,为构建高效、长寿、经济的智能储能系统提供了实用解决方案。

MHD0815的博客 341

基于深度学习的火焰检测系统:YOLOv8 + UI界面 + 数据集详解

YOLO(You Only Look Once)是一种端到端的目标检测算法,其最大优势在于将目标检测任务转化为一个回归问题,可以在一次前向传播中同时完成目标定位和分类。YOLOv8是YOLO系列中的最新版本,相比之前的版本,YOLOv8在精度和推理速度上都做了显著提升,特别是在小物体检测方面表现更加优秀。实时性:YOLOv8具有较高的推理速度,适用于实时火焰检测。高精度:相较于YOLOv7,YOLOv8在精度和小物体检测上有所改进。简单易用:YOLOv8的API简单直观,易于集成和使用。

YOLO 660

洗礼灵魂,修炼python(27)--异常处理(1)—>了解异常

python学到这,其实你应该是在入门到进阶的中间阶段了,但是还没有到进阶的阶段的,这是肯定的,因为进阶得可以从实际问题中解决问题的,比如写一个自动化的爬虫程序啊,对一件事物作大数据归纳分析,开发一个多人聊天服务器等等的。目前还不够的 好,今天,说一个python中很关键的知识点——异常 异常 1.什么是异常: 异常即报错,就像前面例题解析中出现的报错,就是异常,python运行...

dingyu6453的博客 115

学Simulink——基于直流电机的建模与控制场景实例:他励直流电机的起动与制动过程仿真

直流电机在工业控制、电动车辆、自动化设备中广泛应用。其中,他励直流电机(Separately Excited DC Motor)因其励磁绕组与电枢绕组分别供电,具有良好的调速性能和启动特性,常用于需要平稳启动和精确控制的场合。在实际应用中,电机的启动过程和制动过程对电网、机械系统以及电机本身都具有重要影响。因此,仿真分析他励直流电机的启动与制动特性,是电机控制设计的重要环节。本文将详细介绍如何使用构建一个他励直流电机的启动与制动过程仿真模型,并通过仿真分析其动态响应。本文详细介绍了如何使用构建一个。

xiaoheshang_123的博客 227

洗礼灵魂,修炼python(54)--爬虫篇—urllib2模块

urllib2 1.简介 urllib2模块定义的函数和类用来获取URL(主要是HTTP的),他提供一些复杂的接口用于处理: 基本认证,重定向,Cookies等。urllib2和urllib差不多,不过少了些功能,又多了些功能不仅可以使用http协议,而且可以扩展到ftp等协议,大体的用法没什么区别 2.方法/属性 大体都和urllib差不多,所以不做详细的解析 ...

dingyu6453的博客 164

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

洗礼灵魂,修炼python(79)--全栈项目实战篇(7)—— 多级目录菜单之地址管理系统升级版...

要求: 1.在上一篇的地址管理系统的基础上做升级改动 2.添加增删改的功能 3.尽量的贴近生活常识中的地址管理 分析: 需求不用多说了,干就完了 相关文件源码地址:github 这次由于要有增删改的操作,所以需要一个数据库文件存储数据,china_map.txt {'吉林': {'长春': {'朝阳区': {}, '南关区': {}...

dingyu6453的博客 150

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA之异常学习

一、异常的种类 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户? 红色图片是检查异常,就是eclipse/IDEA要提示你是try catch 还是throws。程序员必须处理的异常 蓝色的是:非检查异常。 一般异常(checkedException)主要是...

qq_40359293的博客 365

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java为什么要捕获异常_我为什么要关心Java中捕获的异常?

我为什么要关心Java中捕获的异常?当代码或逻辑中的某些内容中断时,例外可以帮助您.您可以使用异常,而不是使用if和else语句来处理错误,这些错误需要编写更多代码并且代码本身可能会中断.例外允许您像平常一样编写代码,并通过添加try,catch和finally块来处理它们.然后程序将使用异常来指示发生了错误.> try是可能发生异常的代码块包含至少一个catch(或许多),或最后阻止.&g...

weixin_33617670的博客 874

php中为什么要用try catch来捕获异常

Try - 使用异常的函数应该位于 "try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。 Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。 让我们触发一个异常: //创建可抛出一个异常的函数 function checkNum($number) { if($number>1) { throw new Excepti...

resilient的博客 3710

java为啥要捕捉异常_为什么捕获Throwables时会捕获Java中的异常?

这一切都取决于你在捕获它后会对错误做些什么.通常,捕获错误可能不应被视为“正常”异常流程的一部分.如果你确实抓住了一个,你就不应该考虑“继续进行,好像什么也没发生”,因为JVM(和各种库)将使用错误作为一种信号“发生真正严重的事情并且我们需要尽快关闭“.一般来说,最好在他们告诉你结束的时候听他们说.另一个问题是,错误的可恢复性与否可能取决于特定的虚拟机,这是您可能控制或不能控制的.也就是说,有一些...

weixin_40001519的博客 299

经验总结24--捕捉异常的重要性

捕捉异常。 try{} catch(Exception e) {throw new Exception("发现异常");} 1、建议在写一段代码的时候,对一块内容进行异常捕捉,捕捉后,可以提交到外层,也可进行自己的处理。 比如写入数据库,写入日志,写入文本等。或者重新启动程序之类的处理。 2、建议一块一块进行捕捉,而不要整个代码捕捉一次,这样可以很明确知道出错在哪,方便调试。 3、另

qijunming1208的专栏 1371

异常一定要捕获或继续向上抛出吗

文章目录先给结论方法签名throws Exception方法体中throw new Exception调用不捕获调用捕获启示 先给结论 异常一定要捕获或继续向上抛出吗? 答: 一,语法层面,不一定。方法签名的Exception一定要捕获或继续向上抛出,否则编译即出错(Java语法),但方法体中throw new Exception则不一定要捕获或抛出。 二,良好的代码习惯 & 代码鲁棒性层面,是的,一定要捕获或继续向上抛出。 方法签名throws Exception 显然,如果一个方法签名上有异常

ProLayman的博客 4287

java为啥要捕捉异常_java – 为什么在捕获时使用IOexception而不是Exception?

我似乎无法正确地说出这一点,搜索引擎可以获得任何有意义的结果.try{BufferedReader reader = new BufferedReader( new FileReader("foo.bar") );}catch(Exception e){println( e.getMessage() );}所以FileReader只抛出FileNotFoundException,据我所知它是一个I...

weixin_31461519的博客 559
上一篇: 洗礼灵魂,修炼python(27)--异常处理(1)—>了解异常
下一篇: 洗礼灵魂,修炼python(29)--装饰器(1)—>利用经典案例解析装饰器概念
geekbyte.
博客等级 码龄11年 308粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值