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

相关推荐
Railshiqian1 分钟前
UserPickerActivity 内部逻辑分析
开发语言·python
一tiao咸鱼8 分钟前
前端转 agent # 02 - FastAPI 框架入门与原理
前端·python
喜欢打篮球的普通人16 分钟前
Trition程序编写:从“Hello CUDA“到“Hello Triton“:向量加法背后的编译黑魔法
开发语言·后端·rust
code_std17 分钟前
java WebSocket 使用
java·开发语言·websocket
gihigo199827 分钟前
FastSLAM2.0(精度优于1.0)MATLAB 实现
开发语言·matlab
Yolo566Q29 分钟前
Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术应用
开发语言·python
落叶-IT31 分钟前
Java Scanner 类精讲:控制台交互
java·开发语言
chh56338 分钟前
C++--string
java·开发语言·网络·c++·学习
梦想的旅途239 分钟前
企业微信外部群智能自动回复:基于RPA接口的关键词匹配方案
java·开发语言·数据库·机器人·自动化·企业微信
逝水无殇1 小时前
C# 多态性详解
开发语言·后端·c#