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 块中

相关推荐
带多刺的玫瑰3 分钟前
Leecode#35刷题之搜索插入位置
java·python·算法
QQ14220784498 分钟前
IIS + wfastcgi 部署 Flask 应用实战:从连续 500 到稳定 200 的完整踩坑实录
python
传奇开心果编程14 分钟前
【Rust入门知识点学与练】第36课:所有权——移动、借用、Copy、切片
开发语言·学习·rust
WiKiLeaks_successor19 分钟前
Scipy库里的众数函数不严谨,我把它重构了。
python·scipy
傻啦嘿哟25 分钟前
房产数据对比爬虫:同时爬取链家+贝壳+安居客,做房价横向对比
python
小静AI工程实验室28 分钟前
JS 逆向接口 ID 变了?Python 与 Node.js 复现 JSON 大整数精度丢失
javascript·python·node.js
李航198332 分钟前
用 DeepDraw 几何引擎开发建筑设计软件(五):创建选择工具
python·3d
传奇开心果编程37 分钟前
【Rust入门知识点学与练】第35课:工具链与反馈环——先学会读编译器在说什么
开发语言·学习·rust
Metaphor69237 分钟前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
重生之小比特1 小时前
【Java SE】字符串 - String类
java·开发语言·intellij-idea