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

相关推荐
InfinteJustice7 分钟前
SQL窗口函数解决多维排名问题_组合排序实战
jvm·数据库·python
HHHHH1010HHHHH7 分钟前
SymPy中正确处理含整数参数的三角函数定积分:避免n=0特例干扰结果
jvm·数据库·python
做时间的朋友。8 分钟前
Java虚拟线程详解:从原理到实战,解锁百万并发新姿势
java·开发语言
一只大袋鼠9 分钟前
MyBatis 从入门到实战(二):代理 Dao 开发与多表关联查询
java·开发语言·数据库·mysql·mybatis
明月醉窗台10 分钟前
Python-opencv批量处理文件夹中图像操作
开发语言·python·opencv
周末也要写八哥13 分钟前
C++实际开发之泛型编程(模版编程)
java·开发语言·c++
好家伙VCC14 分钟前
**发散创新:用 Rust实现游戏日引擎核心模块——从事件驱动到多线程调度的实战
java·开发语言·python·游戏·rust
m0_7164300715 分钟前
JavaScript中类属性与原型属性的覆盖规则详解
jvm·数据库·python
m0_7349497921 分钟前
Redis如何降低快照对CPU的影响_合理分配RDB执行时机避开业务高峰期
jvm·数据库·python
Dxy123931021626 分钟前
Python在图片上画圆形:从入门到实战
开发语言·python