try:, except ... as ...错误处理

本文详细介绍了Python中处理文件不存在错误的方法,通过try-except语句捕获异常,并提供了创建新文件及写入数据的解决方案。

 

错误处理 

输出错误:try:except ... as ...: 看如下代码

# -*- coding:utf-8 -*-
try:
    file = open('x.txt','r')
except Exception as e:
    print(e)

"""
[Errno 2] No such file or directory: 'x.txt'
"""

处理错误:会使用到循环语句。首先报错:没有这样的文件No such file or directory. 然后决定是否输入y, 输入y以后,系统就会新建一个文件(要用写入的类型),再次运行后,文件中就会写入ssss

# -*- coding:utf-8 -*-
try:
    file=open('x.txt','r+')
except Exception as e:
    print(e)
    response = input('do you want to create a new file:')
    if response=='y':
        file=open('x.txt','w')
    else:
        pass
else:
    file.write('ssss')
    file.close()
"""
[Errno 2] No such file or directory: 'eeee.txt'
do you want to create a new file:'y'
#再执行一次
ssss  #eeee.txt中会写入'ssss'
这段代码使用了Python的异常处理结构,其逻辑可分为三个关键部分: ### 代码结构解析 1. **try块** - 放置可能引发异常的代码 - 示例: ```python try: result = 10 / 0 # 触发ZeroDivisionError open("nonexist.txt") # 触发FileNotFoundError ``` 2. **except RuntimeError as e** - 专门捕获`RuntimeError`及其子类异常 - `as e`将异常对象赋值给变量e,可后续处理: ```python except RuntimeError as e: print(f"运行时错误: {e}") logger.error(e) # 记录错误日志 ``` 3. **finally块** - 无论是否发生异常都会执行 - 典型用途:资源清理 ```python finally: file.close() # 确保文件关闭 db_conn.disconnect() # 确保数据库断开 ``` ### 执行流程示意图 ``` ┌─────────────┐ │ try块代码 │ └──────┬──────┘ ┌─────────┴──────────┐ ┌──────┴──────┐ ┌────────┴───────┐ │ 正常执行 │ │ 抛出RuntimeError │ └──────┬──────┘ └────────┬───────┘ │ │ └───────┬────────────┘ │ ┌─────┴─────┐ │ finally块 │ └───────────┘ ``` ### 典型应用场景 1. **数据库事务**: ```python try: db.start_transaction() db.execute("UPDATE...") except DatabaseError as e: db.rollback() finally: db.release_connection() # 必须释放连接 ``` 2. **文件操作**: ```python try: f = open("data.txt", "r") process(f.read()) except IOError as e: print("文件操作失败:", e) finally: f.close() # 确保文件句柄关闭 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值