news 2026/8/12 11:51:51

异常处理 —— 给程序穿上“防弹衣”与“安全气囊”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
异常处理 —— 给程序穿上“防弹衣”与“安全气囊”

核心梗概:程序运行就像开车,难免会爆胎(报错)。异常处理不是让车不爆胎,而是保证爆胎后你能稳稳停在应急车道,而不是冲下山崖。

1. 为什么你的程序总“闪退”?因为你没上保险!

很多新手写代码,最怕看见红字报错。其实报错不可怕,可怕的是不处理。用户输入"abc"而你非要int()转换,程序直接就“炸”了。我们的宗旨是:把“车祸现场”变成“交通管制”。

while True: try: # 高危操作区 num = int(input("给我一个数字,不然我死给你看:")) result = 100 / num print(f"结果是 {result}") # 针对性拦截:捕获特定的坏人 except ValueError: print("你输入的不是数字!请重新输入,我等你。") except ZeroDivisionError: print("数字 0 不能做除数!你想让我灰飞烟灭吗?重新来!") # 捕获所有其他未知的妖魔鬼怪(必须放最后) except Exception as e: print(f"遇到未知神秘力量干扰:{e},我要申请重启程序了。") break # 只有没出错才执行(彩票中奖区) else: print("耶!本次计算完美无瑕,你真是个小天才!") break # 正确了,退出循环 # 无论死活,都会执行(打扫战场) finally: print("本回合结束,无论成败,我都清理了战场(比如关闭文件)")
2.elsefinally的“宫斗戏”

很多同学分不清elsefinally,其实很简单:

  • else是舔狗:只有当try里一切顺利(没抛异常),它才屁颠屁颠跑出来执行。

  • finally是扫地阿姨:不管你try里是炸了(异常)还是跑了(return),它都雷打不动地执行,专门用来关文件、关数据库连接、关网络套接字。

3. 进阶大招:自己造“专属炸弹”(自定义异常)

业务逻辑复杂了,比如你规定 18 岁以下不能进网吧。Python 自带的异常不够贴切,我们就自己造一个异常类,让代码读起来像小说一样通顺。

# 继承 Exception,自定义一个业务异常 class UnderAgeError(Exception): """未成年自定义异常""" def __init__(self, age, message="未成年人禁止入内"): self.age = age self.message = message super().__init__(self.message) def enter_internet_bar(age): if age < 18: # 抛出自制的炸弹 raise UnderAgeError(age, f"年龄 {age} 太小了,回家写作业去!") else: print("欢迎光临,来一把紧张刺激的LOL吧!") # 捕获自己造的炸弹 try: enter_internet_bar(16) except UnderAgeError as e: print(f"网管拦截:{e}") # 网管拦截:年龄 16 太小了,回家写作业去!
4. 高手进阶:异常链(raise ... from

有时候我们在处理一个异常时,触发了另一个异常,这会掩盖原始的报错信息。Python 3 引入了异常链,让你能追根溯源:

try: with open("不存在的文件.txt") as f: content = f.read() except FileNotFoundError as e: # 抛出一个新的异常,但把旧的 e 作为“原因”带上去 raise RuntimeError("加载配置文件失败,系统即将崩溃") from e # 控制台会清晰地告诉你:上面是因为找不到文件,下面是因为加载失败。

总结:异常处理是程序员最后的尊严。别让你的程序像个玻璃瓶,一摔就碎;要让它像个皮球,拍一下还能弹起来。用好try-except,就是给代码穿上了一层“软猬甲”!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/12 11:51:49

Python FDTD仿真终极实战:从原理到GPU加速的完整指南

Python FDTD仿真终极实战&#xff1a;从原理到GPU加速的完整指南 【免费下载链接】fdtd A 3D electromagnetic FDTD simulator written in Python with optional GPU support 项目地址: https://gitcode.com/gh_mirrors/fd/fdtd 在电磁场仿真领域&#xff0c;时域有限差…

作者头像 李华
网站建设 2026/8/12 11:49:10

Appium Android自动化测试:从环境搭建到CI/CD集成的完整实践指南

1. 项目概述&#xff1a;为什么选择Appium进行Android自动化 如果你正在为Android应用的回归测试、兼容性测试或者重复性操作而头疼&#xff0c;那么Appium绝对是你应该深入了解的工具。它不是一个简单的“点击器”&#xff0c;而是一个开源的、跨平台的移动应用自动化框架&…

作者头像 李华
网站建设 2026/8/12 11:48:50

Postman入门指南:从安装到发送带参数GET请求

1. 项目概述&#xff1a;为什么我们需要Postman&#xff1f;如果你是一名开发者、测试工程师&#xff0c;或者正在学习如何与Web服务打交道&#xff0c;那么“Postman”这个名字对你来说一定不陌生。简单来说&#xff0c;Postman是一个API协作平台&#xff0c;它最核心、最广为…

作者头像 李华
网站建设 2026/8/12 11:47:16

基于向量数据库与反思机制的AI智能体持续学习框架实践

1. 项目概述&#xff1a;当AI智能体学会“自我进化”最近在AI智能体这个圈子里&#xff0c;一个叫Hermes Agent的项目讨论度挺高。简单来说&#xff0c;它解决了一个很实际的问题&#xff1a;我们费劲心思调教出来的AI助手&#xff0c;能不能别每次都像一张白纸&#xff0c;而是…

作者头像 李华