python异常

什么是异常

运行的代码出现不符合代码逻辑情况解释器就会停止运行,并且给出报错信息,这就是异常

异常有什么用?

获取到异常信息可以让我们快速定位错误原因

为什么要捕获异常

为了不让出现异常时程序终端结束运行并报错,我们就可以通过捕获异常来对可能出现的情况进行处理,提高了代码的质量

try:
# 可能出现异常的代码
	print(a)
# 出现异常会执行的代码
except:
	print('出现错误了')
>>出现错误了
# 先尝试运行print,以为里面的变量我没有定义,所以会出现异常并报错,然后except就会执行,并且输出except下的print函数
捕获指定异常
try:
	print(a)
except NameEeeor as e:
	print(e)
>>name 'a' is not defined
# 由于变量a没有定义,所以运行print(a)就会报错,程序会自动抛出异常,然后在通过except指定NameError这个异常就可以捕获到程序抛出的异常信息

捕获所有异常
# 当然异常也分很多种,NameError只是其中一种异常类,所以想要捕获所以类型的异常可以这样写
try:
	print(a)
except Exception as e:
	print(e)
>> name 'a' is not defined
try:
    print(1/0)
except Exception as e:
    print(e) 
>>division by zero
# 因为Exception是所有异常类的父类,所以通过这个父类可以捕获所有python定义过的异常信息
自定义异常
# 虽然Exception可以捕获所有python定义了的异常信息,但是我们自己在写代码的过程中希望能够自己定义一些异常,这样可以方便我们自己修改程序和读取程序
# 这里我自己定义了一个字符串长度异常类,当然了,这个异常类是继承Exception这个父类的,这样才能通过Exception来捕获自定义的异常类的异常信息
class ShortIndexError(Exception):
    def __init__(self,lenth,minlenth):
        self.lenth = lenth
        self.minlenth = minlenth
# 当调用自定义异常类并print(异常类)的时候会获取一个异常信息返回值
    def __str__(self):
        return f'你的字符串长度是{self.lenth},不能低于{self.minlenth}'


def login():
    try:
        password = input('请输入你的密码:')
        # 当我输入的字符串长度满足我自己写的代码异常逻辑时,就抛出该异常
        if len(password) < 6:
        # 通过raise抛出了我自己定义的异常类
            raise ShortIndexError(len(password), 6)
    # 捕获自定义的异常类
    except Exception as e:
    # 打印捕获到的异常信息
        print(e)

login()
>>请输入你的密码:123
>>你的字符串长度是3,不能低于6
异常的else,finally
#else是正常执行没有异常时才会执行
try:
    print('hello word')
except Exception as e:
    print(e)
else:
    print('这段程序没有异常')
finally:
    print('不管它错与不错我都要执行')
>>hello word
>>这段程序没有异常
>>不管它错与不错我都要执行


#finally是不管有没有异常都会执行
try:
    print(num)
except Exception as e:
    print(e)
else:
    print('这段程序没有异常')
finally:
    print('不管它错与不错我都要执行')
>>name 'num' is not defined
>>不管它错与不错我都要执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

guizhouspiderman

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

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

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

打赏作者

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

抵扣说明:

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

余额充值