1.10- 异常处理 try except
在python中程序运行时出现错误后程序会终止这种错误不是程序设计的错误它是在程序运行时的运行错误称为运行时错误(Runime Error)处理这种错误要用到try/except异常处理语句。例如import math ninput(请输入) try: nfloat(n) print(math.sqrt(n)) print(done) except Exception as err: print(Err,err) print(end)运行结果如下请输入12a Err could not convert string to float: 12a end 请输入-5 Err math domain error endpython中有很多异常类。对于不同的异常情况有不同的异常类对象设计不同的异常类对象处理不同的异常是为了在异常类中更好地反映异常的信息。Exception异常类是使用最多的一个。1、异常语句 try…except…python的try语句是异常处理语句try语句格式如下try: 语句块1 except Exception as err: 语句块2 后续语句它的执行规则是1 先执行语句块1如语句块1的各条语句都能正确执行不出现任何运行错误则在执行完语句块1的最后一条语句后try语句执行完毕转后面的程序后续语句。2 若在执行语句块1的过程中出现运行错误则停止语句块1的执行这个错误被系统铺捉到而且错误的信息被转为Excepion异常类对象转去执行语句块2当语句块2执行完后try语句执行完毕转后面的程序后续语句。3 语句块1是try执行的程序段语句块2是语句块1发送运行错误并且被捕捉(except)到后执行的程序段。执行流程图如下在try语句中Exception是python的一个类err是捕捉到的错误对象专门表示错误异常。Exception是系统对象名称不可改变。err是我们给出的变量名可以更改。例如print(begin) # 除数不能为0演示异常的执行过程 try: print(divided) n1/0 print(finish) except Exception as err: print(err,err) print(end)执行结果如下begin divided err division by zero end2、抛出异常 raise异常是程序运行时的一种错误那么这个异常时如何抛出的呢在python中抛出异常的语句是raise语句格式如下raise Exception(异常信息)其中raise是抛出语句Exception(异常信息)表示建立一个异常类Exception的对象该对象用指定的字符串设置其Message属性。例如# 用raise 语句抛出异常 print(begin) try: print(try begin) raise Exception(my test err) print(finish) except Exception as err: print(err,err) print(end)执行结果如下begin try begin err my test err end3、简单异常处理语句有时我们不太关心异常的信息只需要捕捉到异常即可这时在except中不用写Exception部分try语句简化为try: 语句块1 except: 语句块2 后续语句例如# 应用异常处理输入一个整数计算平方根 import math while True: try: ninput(请输入) nint(n) if n0: raise Exception() break except: print(请输入正整数) print(math.sqrt(n)) print(done)执行结果如下请输入-5 请输入正整数 请输入10 3.1622776601683795 done案例输入学生姓名Name、性别Gender、年龄Age要求 姓名Name非空、性别Gender为“男”或“女” 年龄Age在18-30之间。案例分析构造一个异常语句结构输入学生的姓名Name、性别Gender、年龄Age如果有错误就抛出异常。程序如下try: nameinput(请输入学生姓名) if name.strip(): raise Exception(无效的姓名) genderinput(请输入学生性别) if gender!男 and gender!女: raise Exception(无效的性别) ageinput(请输入学生年龄) agefloat(age) if age18 or age30: raise Exception(无效的年龄) print(输入学生的姓名为,name, 性别为,gender, 年龄为,age) except Exception as err: print(err) 运行结果如下 请输入学生姓名大富 请输入学生性别1 无效的性别 请输入学生姓名大富 请输入学生性别女 请输入学生年龄60 无效的年龄程序中这里可能发生异常那里也可能发生异常那么是不是有可能发生异常的地方都使用try异常处理语句进行异常扑捉呢如果这样的化程序太复杂实际上异常有传递机制就是一个地方发生的异常如果没有被扑捉处理的话它可以一层层传递一直到被扑捉为止。在python中如果一个函数抛出一个异常那么在调用函数的地方可以捕捉到这个异常。# 函数的异常捕捉函数抛出异常被调用函数的地方捕捉到 def fun(): print(begin) n1/0 print(end) try: fun() except Exception as err: print(err)程序执行结果begin division by zero由此可见fun 函数中出现的异常在主程序调用 fun 时可以捕捉到 Python 程序一个地方出现异常那么异常会传递到上一级调用的地方这个过程会一直传递下去直到异常被扑捉到为止如果整个过程都没有遇到扑捉语句程序就会因异常而结束。因此如果在 fun 中已经捕捉了异常那么调用的主程序位置就捕捉不到了。# 函数捕捉到异常则调用函数的主程序就捕捉不到了 def fun(): print(begin) try: n1/0 print(end) except Exception as err: print(fun err:,err) try: fun() except Exception as err: print(main err,err)程序执行结果begin fun err: division by zero异常传递示例# 异常的传递 def a(): print(begin a) n1/0 print(end a) def b(): print(begin b) a() # 函数b调用函数a print(end b) try: b() # 主程序调用函数b异常发生在函数b调用的函数a中异常发生了传递 print(main done) except Exception as err: print(err) print(finish)程序执行结果如下begin b begin a division by zero finish由此可见函数A 中出现的异常自己没有捕捉在调用函数 B 中也没有捕捉最后在主程序中被捕捉到即异常有传递性在一个函数中没有被捕捉的异常会传递给调用这个函数的另外函数这个过程会一直传递下去直到异常被捕捉为止就不再往后传递了。# 异常的传递 def a(): print(begin a) n1/0 print(end a) def b(): print(begin b) try: a() except Exception as err: # 异常在b函数中捕捉到则主程序不会再捕捉到 print(err) print(end b) try: b() print(done) except Exception as err: print(err) print(main end)程序执行结果begin b begin a division by zero end b done main end如果出现的异常一直没有被捕获那么就传递到系统程序就会终止。# 异常引起程序终止 def a(): print(begin a) n1/0 print(end a) def b(): print(begin b) a() print(end b) b() print(main end)程序执行结果begin b begin a ZeroDivisionError: division by zero案例时间的输入与显示案例描述输入一个有效的时间并显示案例说明设置时间格式为hⓂ️s输入保证hⓂ️s有效否则抛出异常案例程序def myTime(): hinput(请输入时间中的小时) hint(h) # 转换错误被main程序捕捉 # 小时必须介于0-23之间 if h0 or h23: raise Exception(无效的小时) minput(请输入时间中的分钟) mint(m) # 转换错误被main程序捕捉 # 分钟必须介于0-59之间 if m0 or m59: raise Exception(无效的分钟) sinput(请输入时间中的秒) sint(s) # 转换错误被main程序捕捉 # 秒必须介于0-59之间 if s0 or s59: raise Exception(无效的秒) print(%02d:%02d:%02d%(h,m,s)) try: myTime() except Exception as err: print(err)

相关新闻

JAVA毕设项目: 基于 SpringBoot+Vue 的大学生互助问答、文件共享一体化校园平台 校园学习互助社群与教学资源归档管理系统(源码+文档,讲解、调试运行,定制等)

JAVA毕设项目: 基于 SpringBoot+Vue 的大学生互助问答、文件共享一体化校园平台 校园学习互助社群与教学资源归档管理系统(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 19:34:20阅读更多 →
目前最建议买的开放式耳机有哪些?实测揭晓十大顶级开放式耳机

目前最建议买的开放式耳机有哪些?实测揭晓十大顶级开放式耳机

随着近年来开放式耳机品类的爆火,一些油耳日均戴8小时耳机的人,早就把开放式耳机当成刚需,但如果不避开一些网红品牌,选不对还是一样遭罪。要么耳朵压痛,没带一会就受不了,体验感差;要么漏音严重…

2026/7/28 19:34:20阅读更多 →
JAVA毕设项目:基于 SpringBoot 的校园心理树洞倾诉与互助分享平台设计 智能化高校心理健康管理与社区服务系统 (源码+文档,讲解、调试运行,定制等)

JAVA毕设项目:基于 SpringBoot 的校园心理树洞倾诉与互助分享平台设计 智能化高校心理健康管理与社区服务系统 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 19:34:20阅读更多 →
DeepSeek-V3.2-Exp模型在A3架构下的64K上下文性能优化

DeepSeek-V3.2-Exp模型在A3架构下的64K上下文性能优化

1. 项目背景与核心目标 这个标题描述的是DeepSeek-V3.2-Exp模型在特定硬件配置下的性能表现。从标题可以拆解出几个关键信息点: 模型版本:DeepSeek-V3.2-Exp(实验版本) 上下文长度:64K tokens 处理能力:…

2026/7/28 21:04:52阅读更多 →
终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验

终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验

终极浏览器隐私保护指南:如何用uBlock Origin重新掌控你的网络体验 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 在当今数字时代&…

2026/7/28 21:04:52阅读更多 →
Vue Mixin核心原理与实战应用指南

Vue Mixin核心原理与实战应用指南

1. Vue Mixin 的本质与核心价值在Vue.js开发中,Mixin(混合)是一种极为灵活的代码复用机制。简单来说,它就像是一个可插拔的功能模块包,允许你将一组组件选项、逻辑方法或生命周期钩子"混入"到多个组件中。不…

2026/7/28 21:04:52阅读更多 →
物联网硬件安全方案:SE050芯片与PIC32MZ的实战应用

物联网硬件安全方案:SE050芯片与PIC32MZ的实战应用

1. 为什么物联网设备需要硬件级安全方案在智能家居、工业4.0等场景中,我们常遇到这样的困境:某品牌智能门锁被曝存在漏洞,攻击者通过Wi-Fi信号就能远程开锁;工厂传感器数据在传输过程中被篡改,导致生产线误判停机。这些…

2026/7/28 21:04:52阅读更多 →
Python开发实战:从基础到工程化的完整指南

Python开发实战:从基础到工程化的完整指南

1. Python学习路线全景解析作为一名从2010年开始接触Python的老程序员,我见证了这门语言从科学计算工具成长为全能型选手的完整历程。今天想和大家系统性地聊聊Python学习的核心路径,特别是那些官方文档不会告诉你的实战经验。不同于市面上零散的教程&am…

2026/7/28 21:04:52阅读更多 →
MSC外泌体怎么从科研制备到规模化生产?Rooster HD-EV连续培养体系思路

MSC外泌体怎么从科研制备到规模化生产?Rooster HD-EV连续培养体系思路

摘要: MSC外泌体生产从科研级制备走向规模化时,上游培养体系会成为影响产量、纯度、成本和批次一致性的核心变量。传统“扩增—洗涤—换液—收集”流程操作复杂、颗粒损耗风险高、培养基背景可能影响下游纯化和表征。Rooster HD-EV以化学成分限定、低颗粒…

2026/7/28 21:02:51阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →