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

相关推荐
朱一头zcy2 小时前
Linux系列04:简单理解inode、硬链接、软链接、挂载的概念
linux·笔记
umeelove352 小时前
【Flask】四、flask连接并操作数据库
数据库·python·flask
楼田莉子2 小时前
C++数据结构:基数树
开发语言·数据结构·c++·学习
ProgramHan2 小时前
十大排行榜——后端语言及要介绍
java·c++·python·php
小江的记录本2 小时前
【反射】Java反射 全方位知识体系(附 应用场景 + 《八股文常考面试题》)
java·开发语言·前端·后端·python·spring·面试
L1624762 小时前
Nginx+Keepalived 高可用集群实战笔记
运维·笔记·nginx
_李小白2 小时前
【OSG学习笔记】Day 3: OSG 实用工具
笔记·图形渲染
无风听海2 小时前
typing._alias 深度解析
python
不懒不懒2 小时前
【基于 CNN 的食物图片分类:数据增强、最优模型保存与学习率调整实战】
开发语言·python