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)

相关新闻

11. Container With Most Water 盛最多水的容器

11. Container With Most Water 盛最多水的容器

原题链接:https://leetcode.com/problems/container-with-most-water/ 找出在n条垂直于x轴的线中能够组成的最大容器面积的两条线,容器不能倾斜,n的最小值为2. 解题思路: 1.暴力破解 设起始点为i,终点为j,找…

2026/10/27 18:35:42 阅读更多 →
Json粘贴为类

Json粘贴为类

为vs引入一个名为:“Paste Json as Code-quicktype” 的插件 新建一个cs文件 复制 json 文本到剪切板 依次点击编辑→Paste Json as Code

2026/10/27 18:36:03 阅读更多 →
突破网盘限速瓶颈!夸克网盘提速+直链解析方法大汇编

突破网盘限速瓶颈!夸克网盘提速+直链解析方法大汇编

在日常传输和获取大型文件时,许多人经常会遇到数据接收进度缓慢、耗时过长的困扰。想要让数据传输的效率得到质的提升,关键在于对传输环境、链路通道以及本地软硬件状态进行全方位的调优。以下为您梳理的几个核心策略,能够帮助您显著提升文件…

2026/10/27 19:12:06 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 16:58:40 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →