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. 异常会向上传递,直到被捕获

相关推荐
贫民窟的勇敢爷们4 分钟前
Scikit-learn机器学习项目:从入门到实战的价值与实践
python·机器学习·scikit-learn
专注VB编程开发20年7 分钟前
专业分析python底层调用与按键精灵,ah3等的对比,hookdll,内存加载,调用.net dll
开发语言·javascript·python·microsoft·php·.net
时间不早了sss8 分钟前
Python处理文档
开发语言·前端·python
海兰8 分钟前
【第39篇】spring-ai-alibaba-graph-example学习路径概览
人工智能·spring boot·学习·spring·spring ai
2401_8987176612 分钟前
HTML5中SVG原生动画标签Animate的基础用法
jvm·数据库·python
IT策士14 分钟前
Python PPT操作:从入门到精通
开发语言·python·powerpoint
2401_8676239815 分钟前
mysql如何导出特定条件的查询数据_使用mysqldump加where参数
jvm·数据库·python
星哲最开心17 分钟前
Miniconda安装与使用教程
python
财经资讯数据_灵砚智能17 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月8日
大数据·人工智能·python·信息可视化·自然语言处理
其实防守也摸鱼17 分钟前
软件安全与漏洞--实验 软件安全设计
开发语言·网络·python·安全·软件安全·实验·软件安全设计