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

相关推荐
是一个Bug20 小时前
Agent(智能体)应用 的入门学习路径
学习·机器学习
2301_8090511420 小时前
Linux 网络编程 学习笔记
linux·网络·学习
风吹夏回21 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
eggcode21 小时前
【Qt学习】Linux(ARM架构)在线安装Qt6.x
linux·qt·学习·arm
小熊Coding21 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋921 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本21 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
田里的水稻1 天前
OE_ubuntu26.04与宿主机之间复制粘贴内容
人工智能·python·机器人
鹏北海-RemHusband1 天前
Go 语言进阶笔记 — 面向 JS/TS 前端开发者
笔记·golang
_李小白1 天前
【android opencv学习笔记】Day 26: 滤波算法之低通滤波与图像缩放插值
android·opencv·学习