python打卡day25@浙大疏锦行

知识点回顾:

1.异常处理机制

2.debug过程中的各类报错

3.try-except机制

4.try-except-else-finally机制

在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。

作业:理解今日的内容即可,可以检查自己过去借助ai写的代码是否带有try-except机制,以后可以尝试采用这类写法增加代码健壮性。

一、异常处理机制

复制代码
try:
    result = 10 / 0
except ZeroDivisionError as e:
    print(f"发生除零错误: {e}")
except Exception as e:
    print(f"未知错误: {e}")
else:
    print("计算成功")
finally:
    print("清理资源")

二、debug过程中的各类报错

复制代码
try:
    import non_existent_module  # ModuleNotFoundError
except ImportError as e:
    print(f"导入错误: {e}")

def bad_logic(x):
    return x + "2"  

try:
    bad_logic(10)
except TypeError as e:
    print(f"类型错误: {e}")

三、try-except机制

复制代码
def read_file(filename):
    try:
        with open(filename, 'r') as f:
            content = f.read()
        return content
    except FileNotFoundError:
        print(f"文件 {filename} 不存在")
    except PermissionError:
        print("没有读取权限")
    except UnicodeDecodeError:
        print("文件编码错误")

read_file("non_existent.txt")  
read_file("/root/.bashrc")     
read_file("binary_file.bin")   

四、try-except-else-finally机制

复制代码
def process_transaction(amount):
    balance = 1000
    try:
        if amount < 0:
            raise ValueError("金额不能为负数")  
        new_balance = balance - amount
    except ValueError as e:
        print(f"交易失败: {e}")
    except TypeError:
        print("错误:金额类型无效")
    else:
        print(f"交易成功,新余额: {new_balance}")
        return new_balance
    finally:
        print("记录交易日志到数据库")

process_transaction(500)  
process_transaction(-100)  
process_transaction("abc") 

关键点总结

  1. 异常类型匹配except 块按顺序匹配异常类型

  2. 异常层级Exception 是所有内置异常的基类

  3. 主动抛出异常 :使用 raise 手动触发异常

  4. 资源清理finally 块适合做资源释放操作

  5. 错误隔离 :将可能出错的代码尽量缩小在 try 块中

相关推荐
qq_401700418 小时前
Qt 项目中使用 QSS 的全面总结
开发语言·qt
张登杰踩8 小时前
DINOv2 with Registers 系列模型详解:Giant 版本规格、Register Token 机制与使用指南
python·numpy
玖釉-8 小时前
C++ 中的循环语句详解:while、do...while、for、嵌套循环与循环控制
开发语言·c++·算法
XMYX-08 小时前
37 - Go env 环境变量:配置管理与运行时控制
开发语言·golang
隐于花海,等待花开8 小时前
9. Python 文件与输入输出 深度解析
python
一楼的猫8 小时前
从文本特征分析看网文平台AI检测:3个被忽视的指标
开发语言·人工智能·学习方法·ai编程·ai写作·ai自动写作
yuan199978 小时前
基于MATLAB的梁非线性动力学方程编程实现框架
开发语言·matlab
Xin_ye100869 小时前
C# 零基础到精通教程 - 第十一章:LINQ——语言集成查询
开发语言·c#
欧米欧9 小时前
C++进阶数据结构之搜索二叉树
开发语言·数据结构·c++
Xin_ye100869 小时前
C# 零基础到精通教程 - 第十章:集合与泛型——高效管理数据
开发语言·c#