当前位置:首页>python>小白学python第79天之Python异常(下)

小白学python第79天之Python异常(下)

  • 2026-09-08 05:39:09
小白学python第79天之Python异常(下)

2.24

Python异常(下)

?

学前疑问

当程序深处一个复杂的函数调用链中抛出异常时,如何能快速定位问题的根本原因?又该如何创建一种专属的“错误信号”,来清晰明确地表达你自定义的业务逻辑错误(比如“用户余额不足”、“数据格式不符合规范”)?

1

Python异常(下)

(1)异常捕获中的else语句

else语句:表示的是如果没有异常要执行的代码

try:    print(1)except Exception as e:    print(e)else:    print('没有异常')

案例:

try:    f = open('python.txt', 'r', encoding='utf-8')except Exception as e:    print(e)else:    content = f.readlines()    print(content, end='')    f.close()

(2)异常捕获中的finally语句

finally表示的是无论是否异常都要执行的代码,例如关闭文件、关闭数据库连接。

try:    f = open('python.txt', 'r')except:    f = open('python.txt', 'w')else:    print('没异常')finally:    print('关闭文件')    f.close()

(3)异常的综合案例

异常的传递

需求:

① 尝试只读方式打开python.txt文件,如果文件存在则读取文件内容,文件不存在则提示用户即可。

② 读取内容要求:尝试循环读取内容,读取过程中如果检测到用户意外终止程序,则except捕获

import timetry:    f = open('python.txt', 'r', encoding='utf-8')    try:        while True:            content = f.readline()            if len(content) == 0:                break            time.sleep(3)            print(content, end='')    except:        # Ctrl + C(终端里面,其代表终止程序的继续执行)        print('python.txt未全部读取完成,中断了...')    finally:        f.close()except:    print('python.txt文件未找到...')

python.txt内容:

程序还没运行完后点击暂定后输出结果:

(4)raise抛出自定义异常

在Python中,抛出自定义异常的语法为raise 异常类对象。

需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足6位,则报错,即抛出自定义异常,并捕获该异常)。

原生方法:

def input_password():    password = input('请输入您的密码,不少于6位:')    iflen(password) < 6:        raise Exception('您的密码长度少于6位')        return    # 如果密码长度正常,则直接显示密码    print(password)input_password()

面向对象抛出自定义异常:

class ShortInputError(Exception):    # length代表输入密码长度,min_length代表ShortInputError最小长度    def __init__(self, length, min_length):        self.length = length        self.min_length = min_length    # 定义一个__str__方法,用于输出字符串信息    def __str__(self):        return f'您输入的密码长度为{self.length}, 不能少于{self.min_length}个字符'try:    password = input('请输入您的密码,不少于6位:')    if len(password) < 6:        raise ShortInputError(len(password), 6)except Exception as e:    print(e)else:    print(f'输入完成,您的密码是{password}')

今日学习完毕,课后作业: 

简易文件读取与数据转换,题目要求:

请编写一个程序,尝试完成以下操作:

(1)提示用户输入一个文件名。

(2)尝试打开该文件,并读取文件中的第一行内容。

(3)尝试将读取到的内容转换为一个整数。

(4)打印转换成功后的整数。

程序需要处理以下两种可能的错误情况:

① 用户输入的文件不存在。(引发 FileNotFoundError)

② 文件中的内容无法转换为整数。(引发 ValueError)

最新文章

随机文章