当前位置: 首页 > news >正文

Day25 异常处理

1.异常处理机制

(1)什么是异常?

异常指的是程序运行过程中发生的意外错误

比如:

尝试用 0 除以一个数(除数不能为 0);

访问不存在的文件或变量;

网络请求超时;

用户输入了无效的数据(如用字母代替数字)。

这些情况会导致程序突然终止并报错(比如显示一长串红色的错误信息),而异常处理机制就是用来捕获这些错误并处理它们的。

(2)异常处理的核心逻辑:try - catch(尝试 - 捕获)

大多数编程语言(如 Java、Python、JavaScript 等)都有类似的异常处理结构,核心由 trycatch(或 except)、finally 三个部分组成。

try 块:尝试执行可能出错的代码

把「可能引发异常的代码」放在 try 块中。如果代码正常运行,就跳过 catch 块;如果出错,就「抛出异常」并跳转到对应的 catch 块。

try:num = int(input("请输入一个整数:"))  # 若用户输入字母,会引发 ValueError 异常result = 10 / num  # 若用户输入 0,会引发 ZeroDivisionError 异常print("计算结果:", result)
except:  # 捕获所有异常(初学者可先这样写,后续再细化)print("输入有误或计算出错!")

catch(或 except)块:捕获并处理异常

当 try 块中的代码抛出异常时,程序会立即跳转到 catch 块,执行预先写好的「错误处理逻辑」。

可以针对不同类型的异常写多个 catch 块(如先处理文件不存在异常,再处理数值错误);

可以获取异常的具体信息(如错误原因),方便调试。

finally 块:可选的「清理操作」

无论 try 块是否发生异常,finally 块中的代码都会执行。常用于释放资源(如关闭文件、断开网络连接等)。

(3)为什么需要异常处理?

防止程序崩溃

没有异常处理时,程序遇到错误会直接终止(比如用户输入错误导致软件闪退);有了异常处理,程序可以继续运行并提示用户。

提升用户体验

用友好的提示(如 “请输入有效数字”)代替晦涩的错误信息,让用户知道哪里出了问题。

方便调试和维护

可以记录异常细节(如错误类型、发生位置),帮助开发者快速定位问题。

2.debug过程中的各类报错


3.try-except机制

try:把你认为可能会出错的代码放在这里。

except:如果 try 块里的代码真的出错了(从出错开始就不会继续执行try之后的代码了),Python 就会跳到 except 块里执行这里的代码,而不是崩溃。

4.try-except-else-finally机制

try: 包含可能引发异常的代码。

except: 处理在 try 块中发生的特定异常。

else: (可选)如果 try 块中没有发生任何异常,则执行此代码块。

finally: (可选)无论 try 块中是否发生异常,总会执行此代码块。

为什么使用 else?

清晰性: 它清楚地将“主要尝试的操作(可能出错)”与“操作成功后的后续步骤”分开。

避免意外捕获: 如果把“成功后的后续步骤”也放在 try 块里,而这些步骤本身也可能引发 try 块想要捕获的同类型异常,那么就会导致逻辑混淆。else 块中的代码不会被同一个 try 块的 except 子句捕获。

@浙大疏锦行

相关文章:

  • 力扣HOT100之二分查找:4. 寻找两个正序数组的中位数
  • pymongo配置事务环境并封装事务功能
  • (三)Linux性能优化-CPU-CPU 使用率
  • JDBC基础关键_001_认识
  • DOM(文档对象模型)深度解析
  • Git 常见操作
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
  • DiMTAIC 2024 数字医学技术及应用创新大赛-甲状腺B超静态及动态影像算法赛-参赛项目
  • GitOps 核心思想 - 当 Git 成为唯一信源
  • 【PhysUnits】17.2 配套变量结构体 Var(variable.rs)
  • 第二十九章 数组
  • [嵌入式AI从0开始到入土]18_Ascend C算子开发环境(S5赛季)
  • 【redis】线程IO模型
  • 探索数学的迷人谜题:考兰兹猜想与MATLAB演示
  • MyBatis中foreach集合用法详解
  • STM32H562----------串口通信(UART)
  • 大模型如何选型?嵌入模型如何选型?
  • (LeetCode 每日一题)386. 字典序排数(递归、深度优先搜索dfs || 递推)
  • 2.2.1 ASPICE的需求收集
  • k8s4部署
  • 一个工厂做网站有用吗/免费网络推广软件有哪些
  • 一区适合晚上一个人看b站/含有友情链接的网页
  • 黄州做网站的/2021十大网络舆情案例
  • 深圳网站建设外包公司/百度明星搜索量排行榜
  • 网站建设用到的工具/免费建网站
  • 公司做网站推广需要多少钱/企业宣传文案