Python:异常处理简介和基本使用

文章详细介绍了Python中的异常处理机制,包括捕获特定异常类型如NameError和ZeroDivisionError,异常的传递,以及如何自定义异常类。此外,还讨论了finally和else语句在资源管理中的应用。
摘要由CSDN通过智能技术生成

捕获多个指定异常

try:
    print(1/0)
except (NameError, ZeroDivisionError):
    print('有错误')


异常类型

# NameError
# print(num)

# ZeroDivisionError
print(1/0)


异常的传递

# 需求1: 尝试只读打开test.txt 文件存在读取内容,不存在提示用户
# 需求2:读取内容:循环读取,当无内容的时候退出循环,如果用户意外终止,提示用户已经被意外终止
import time
try:
    f = open('test.txt')
    # 尝试循环读取内容
    try:
        while True:
            con = f.readline()
            # 如果读取完成退出循环
            if len(con) == 0:
                break

            time.sleep(3)
            print(con)
    except:
        # 在命令提示符中如果按下ctrl+C结束终止的键
        print('程序被意外终止')
except:
    print('该文件不存在')





捕获指定异常

# 需求:尝试执行打印num,捕获异常类型NameError,如果捕获到这个异常类型,执行打印:有错误
try:
    # print(num)
    print(1/0)
except NameError:
    print('有错误')


捕获异常描述信息

try:
    print(1/0)
except (NameError, ZeroDivisionError) as result:
    print(result)


体验异常

# 需求:尝试打开test.txt(r),如果文件不存在,只写方式打开w
"""
try:
    可能发生错误的代码
except:
    发生错误的时候执行的代码
"""

try:
    f = open('test.txt', 'r')
except:
    f = open('test.txt', 'w')




捕获所有异常

# 尝试执行打印num,捕获Exception 打印异常描述信息
try:
    print(num)
except Exception as result:
    print(result)

自定义异常

# 1. 自定义异常类, 继承Exception, 魔法方法有init和str(设置异常描述信息)
class ShortInputError(Exception):
    def \_\_init\_\_(self, length, min\_len):
        # 用户输入的密码长度
        self.length = length
        # 系统要求的最少长度
        self.min\_len = min\_len

    # 设置异常描述信息
    def \_\_str\_\_(self):
        return f'您输入的密码长度是{self.length}, 密码不能少于{self.min\_len}'


def main():
    # 2. 抛出异常: 尝试执行:用户输入密码,如果长度小于3,抛出异常
    try:
        password = input('请输入密码:')
        if len(password) < 3:
            # 抛出异常类创建的对象
            raise ShortInputError(len(password), 3)
    # 3. 捕获该异常
    except Exception as result:
        print(result)
    else:
        print('没有异常,密码输入完成')


main()




finally

# 需求:尝试以r打开文件,如果有异常以w打开这个文件,最终关闭文件
try:
    f = open('test100.txt', 'r')
except Exception as e:
    f = open('test100.txt', 'w')
finally:
    f.close()




else

try:
    print(1)
except Exception as result:
    print(result)
else:
    print('我是else,当没有异常的时候执行的代码')


copy

import os
import re

def process\_py\_file(file\_path):
    with open(file\_path, 'r',encoding='utf-8'
) as f:
        content = f.read()

    # 转义特殊字符,确保Markdown兼容
    content = re.sub(r'([\_\*\`])', r'\\\1', content)

    # 包裹在代码块中
    markdown\_content = f"\`\`\`python\n{content}\n\`\`\`"

    return markdown\_content


def merge\_to\_markdown(directory, output\_md\_file):
    with open(output\_md\_file, 'w',encoding='utf-8') as md\_file:
        for root, dirs, files in os.walk(directory):
            for file in files:
                if file.endswith('.py'):
                    file\_path = os.path.join(root, file)
                    file\_title = file[:-3]  # Remove the '.py' extension
                    markdown\_content = process\_py\_file(file\_path)
                    # Write to the Markdown file
                    index = file\_title.find('\_',4)
                    file\_title = file[index + 1:-3]
                    md\_file.write(f"# {file\_title}\n\n")
                    md\_file.write(markdown\_content)
                    md\_file.write('\n\n')  # Add an empty line for separation


# Example usage
merge\_to\_markdown('D:\\ai\\ma\\阶段1-人工智能python基础\\day10-面向对象与异常处理\\day10-面向对象与异常处理\\02-代码', 'C:\\Users\\13020\\Desktop\\temp\\test.md')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员无羡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值