python基础学习笔记第八章——异常

一、异常概念

  • 异常(BUG) :程序运行时出现的错误,会导致程序直接中断停止。

  • 例子:除0、用错数据类型、文件不存在、访问不存在的变量等。

二、异常捕获的意义

代码不可能100%无错,给(try)可能出错的代码 做(except)备用方案,让程序出错后不崩溃,继续运行。

三、完整语法

python 复制代码
try:
    # 【核心】可能抛出异常的代码
    可能报错的代码

except 异常类型1 as 变量:
    # 捕获到指定异常,执行处理
    异常1的处理方案

except 异常类型2 as 变量:
    # 捕获另一种异常
    异常2的处理方案

except Exception as e:
    # 【万能捕获】捕获所有异常(最后写)
    所有未捕获异常的处理

else:
    # 【可选】没有发生任何异常,才执行
    程序正常运行的代码

finally:
    # 【可选】无论是否异常,一定会执行
    # 常用于:关闭文件、关闭连接、清理资源
    必须执行的代码

语法要点

  1. try:只有里面的代码会被监控异常

  2. except:匹配异常类型,进行特定处理

  3. Exception:所有异常的父类,能捕获全部异常

  4. else:无异常才执行

  5. finally:有无异常都执行(必执行)

四、基础代码示例

示例1:捕获除0错误 + 万能捕获

python 复制代码
try:
    a = 10
    b = 0
    result = a / b  # 会报 ZeroDivisionError 异常
    print(result)

# 捕获指定异常
except ZeroDivisionError as e:
    print("捕获到异常:不能除以0!")
    print("异常信息:", e)

# 捕获其他所有异常
except Exception as e:
    print("发生未知错误:", e)

else:
    print("程序运行完全正常")

finally:
    print("=== 无论是否报错,我都会执行 ===")

示例2:捕获类型错误

python 复制代码
try:
    num = "123"
    sum = num + 10  # 字符串+数字,报 TypeError

except TypeError as e:
    print("错误:数据类型不匹配")

五、异常的传递性

  1. 异常会从内到外、从下到上传递(函数嵌套中)

  2. 从出错的函数 → 调用它的函数 → 主函数

  3. 直到被except捕获,若全程没捕获,程序崩溃报错

代码演示传递

python 复制代码
# 函数3:出错的地方
def func03():
    print(10 / 0)  # 异常诞生

# 函数2:调用函数3
def func02():
    func03()

# 函数1:调用函数2
def func01():
    func02()

# 主函数:最终捕获
try:
    func01()
except Exception as e:
    print("主函数捕获到了传递上来的异常:", e)

结论:异常从func03→func02→func01→main,最终被捕获。

六、报错查看技巧

  • 报错信息最后一行:具体异常类型 + 原因

  • 往上看:报错代码位置、函数调用链条

  • 直接定位最后一行,最快找到bug根源

总结

  1. 异常=运行时bug,会中断程序

  2. try监控代码,except捕获处理,Exception捕获全部

  3. else无异常执行,finally必执行

  4. 异常会向上传递,直到被捕获

相关推荐
优化Henry14 分钟前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
xiaomu0012331 分钟前
高湿环境床垫湿度管理技术框架:湿度阈值、排湿结构与材料选型
经验分享·学习·学习方法
xiaoqi01951 小时前
机器学习因子分析实战:从量化特征到可视化决策
人工智能·python·机器学习
Escalating_xu1 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
zhangrelay1 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
probex_1 小时前
学习笔记:知识图谱是什么,在测试里能干什么
笔记·学习·知识图谱
happylifetree1 小时前
Python14:核心语法-数据存储与运算-字符串定义
python
hhb_6181 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
小静AI工程实验室2 小时前
asyncio.Queue 有界队列实战:背压、task_done、join 与异常收尾
python
小凡geo2 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai