python入门之异常处理


一、异常

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

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

f.close()  # 切记创建文件对象要及时关闭

二、捕获异常

try:
    print(num)
except EOFError:  # 捕获异常
    print("EOF错误")
except NameError:
    print("未定义变量")

try:
    print(10 / 0)
except(NameError, ZeroDivisionError) as e:  # 捕获多个异常并打印出异常描述信息,e 是对这个异常的描述信息
    print(f'{type(e)}: {e}')

try:
    open('test2.txt', 'r')  # 这样能捕获所有异常信息,并打印出异常的描述信息
except Exception as e:
    print(e)

三、含else的异常捕获

try:
    print(1)
except Exception as e:
    print(e)
else:
    print("没有异常")  # 当程序没有异常时执行else里面的内容

try:
    f = open('test.txt', 'r')
except Exception as e:
    print(e)
    f = open('test.txt', 'w')
else:
    print("没有异常")
finally:
    f.close()

四、异常传递

# 需求1:尝试只读打开text.txt文件,若存在内容则读取内容,不存在内容则提示用户
# 需求2:读取内容:循环读取,当无内容的时候退出循环,如果用户意外之中,提示用户已经意外终止

import time

filename = "test.txt"
try:
    f = open(filename)
    try:
        while True:
            line = f.readline()
            time.sleep(3)
            if len(line) == 0:
                break
            print(line)
    except:
        # 在命令提示符中按下ctrl+C就可以制造《意外终止》
        print("程序被意外终止")
except:
    print("此文件不存在")

五、自定义异常

# 在Python中,抛出⾃定义异常的语法为 raise 异常类对象  。
# 需求:密码⻓度不⾜,则报异常(⽤户输⼊密码,如果输⼊的⻓度不⾜3位,则报错,
# 即抛出⾃定义异 常,并捕获该异常)。

# 自定义异常类,继承Exception
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 fun():
    try:
        con = input('请输入密码:')
        if len(con) < 6:
            raise ShortInputError(len(con), 6)
    except Exception as e:
        print(e)
    else:
        print('输入密码已完成')


fun()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二十四桥_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值